forked from ryanmwangi/CalMerger
Compare commits
99 Commits
Author | SHA1 | Date |
---|---|---|
Ryan Mwangi | 869beeb3d4 | |
Ryan Mwangi | 18215a89f6 | |
Ryan Mwangi | 577faabc3b | |
Ryan Mwangi | 92c6fffe64 | |
Ryan Mwangi | 51c4f5c31f | |
Ryan Mwangi | 5ec6341680 | |
Ryan Mwangi | d6022eeb62 | |
Ryan Mwangi | 5ec42d07bb | |
xeruf | ff595a9f70 | |
xeruf | 1706b9cad3 | |
xeruf | 2bd5c967af | |
xeruf | c8f3771717 | |
Ryan Mwangi | 5b40bf5d75 | |
Ryan Mwangi | 227ec8a211 | |
Ryan Mwangi | 5769c9ce5b | |
Ryan Mwangi | 6a428c55e0 | |
Ryan Mwangi | 56e5f69cbb | |
Ryan Mwangi | e45c433797 | |
Ryan Mwangi | c4c723d60a | |
Ryan Mwangi | 29208d8b4d | |
Ryan Mwangi | c1c6ae47de | |
Ryan Mwangi | 174a845c78 | |
Ryan Mwangi | ad3ec6f7a6 | |
Ryan Mwangi | fab6753c5a | |
Ryan Mwangi | 379a79617b | |
Ryan Mwangi | d15d0be707 | |
Ryan Mwangi | 5e3e8eab5b | |
Ryan Mwangi | 2283b82ba7 | |
Ryan Mwangi | 2f3b791e5d | |
Ryan Mwangi | ac26afe778 | |
Ryan Mwangi | e5e9dbb680 | |
Ryan Mwangi | 8881361a1f | |
Ryan Mwangi | 8965eaa319 | |
Ryan Mwangi | ca52065f66 | |
Ryan Mwangi | 8ab685dec0 | |
Ryan Mwangi | 585b83b03c | |
Ryan Mwangi | 73e46d7f99 | |
Ryan Mwangi | d2b0234b4b | |
Ryan Mwangi | 2b7002303c | |
Ryan Mwangi | 6cf5b8420e | |
Ryan Mwangi | ddcfedbbdf | |
xeruf | bed3e47f8e | |
xeruf | 1f19d8cf1f | |
xeruf | 77e6963118 | |
Ryan Mwangi | 782e62d56d | |
Ryan Mwangi | 9468e58132 | |
Ryan Mwangi | d4498cd0d8 | |
Ryan Mwangi | 3edc551031 | |
Ryan Mwangi | 859d3f3db5 | |
xeruf | 00e152f08c | |
xeruf | 864a3739b3 | |
Ryan Mwangi | 495fb57675 | |
Ryan Mwangi | ff32bb430d | |
Ryan Mwangi | 9a0a62675c | |
xeruf | 0a863a4eb2 | |
Ryan Mwangi | a94727df56 | |
Ryan Mwangi | 7e2b846029 | |
Ryan Mwangi | cbdfdf6c97 | |
Ryan Mwangi | 2e9de0749d | |
Ryan Mwangi | d08d87f47c | |
Ryan Mwangi | 0114c94caa | |
Ryan Mwangi | e8582cd411 | |
Ryan Mwangi | 665c134597 | |
ryanmwangi | 0b0ecaa0c2 | |
xeruf | 4032e2c49d | |
Ryan Mwangi | 441f4d2fb3 | |
Ryan Mwangi | 8c0de14d5f | |
Ryan Mwangi | af980956cb | |
Ryan Mwangi | 5d7bdb6878 | |
Ryan Mwangi | df37f35ace | |
Ryan Mwangi | 2a0fe0812e | |
Ryan Mwangi | 3b590958a0 | |
Ryan Mwangi | 299b8c1404 | |
Ryan Mwangi | be6d378890 | |
Ryan Mwangi | 11a4efe30b | |
Ryan Mwangi | db78a0121e | |
Ryan Mwangi | 1bb1db7326 | |
Ryan Mwangi | 73135dd9d4 | |
Ryan Mwangi | 41687e1e22 | |
Ryan Mwangi | 8e143df754 | |
Ryan Mwangi | ffd2fa5370 | |
Ryan Mwangi | 1c241c0738 | |
Ryan Mwangi | 69f2f71a2d | |
Ryan Mwangi | 708144baa6 | |
Ryan Mwangi | b32696f14c | |
Ryan Mwangi | cdc25981b5 | |
Ryan Mwangi | 1dde451f9d | |
Ryan Mwangi | 00f5fedb2a | |
Ryan Mwangi | 1bc7119b08 | |
Ryan Mwangi | 0c61cb0e7c | |
Ryan Mwangi | af74d809c4 | |
Ryan Mwangi | cf10a62049 | |
xeruf | 495557e6c2 | |
xeruf | 5b3a47a122 | |
xeruf | 8eb44e18f6 | |
Ryan Mwangi | 6c9fb1139f | |
Ryan Mwangi | 188a2b713c | |
Ryan Mwangi | 4fce46c57e | |
Ryan Mwangi | 9f036b43cd |
|
@ -0,0 +1,8 @@
|
||||||
|
node_modules
|
||||||
|
npm-debug.log
|
||||||
|
.DS_Store
|
||||||
|
tests
|
||||||
|
*.test.js
|
||||||
|
*.log
|
||||||
|
.git
|
||||||
|
.env
|
|
@ -0,0 +1,2 @@
|
||||||
|
* text=auto eol=lf
|
||||||
|
*.ics text eol=crlf
|
|
@ -1,2 +1,4 @@
|
||||||
node_modules/
|
node_modules/
|
||||||
tests/calendar/
|
test/calendar/
|
||||||
|
calendar/
|
||||||
|
logs/
|
44
README.md
44
README.md
|
@ -39,6 +39,50 @@ The application also generates a unique URL for the merged calendar and updates
|
||||||
```bash
|
```bash
|
||||||
npm start
|
npm start
|
||||||
```
|
```
|
||||||
|
## Building and Running with Docker
|
||||||
|
|
||||||
|
### 1. Build the Docker Image
|
||||||
|
|
||||||
|
Run the following command to build the Docker image:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t calmerger-app .
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Run the Docker Container
|
||||||
|
|
||||||
|
To start the container, use:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d --name calmerger -p 3000:3000 calmerger-app
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
This maps the container's port `3000` to the host system's port `3000`. The application will be accessible at [http://localhost:3000](http://localhost:3000).
|
||||||
|
|
||||||
|
### 3. Using Docker Compose (Optional)
|
||||||
|
|
||||||
|
If you prefer to use Docker Compose, ensure you have a `docker-compose.yml` file in your project directory. Then, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
This will automatically build and start the container based on the configuration in the `docker-compose.yml` file.
|
||||||
|
|
||||||
|
### 4. Stopping the Docker Container
|
||||||
|
|
||||||
|
To stop the running container, use:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker stop calmerger
|
||||||
|
```
|
||||||
|
|
||||||
|
To remove the container:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker rm calmerger
|
||||||
|
```
|
||||||
|
|
||||||
## Running Tests
|
## Running Tests
|
||||||
|
|
||||||
|
|
158
calendar.test.js
158
calendar.test.js
|
@ -1,158 +0,0 @@
|
||||||
import request from 'supertest';
|
|
||||||
import express from 'express';
|
|
||||||
import fs from 'fs';
|
|
||||||
import path from 'path';
|
|
||||||
import app from './server';
|
|
||||||
|
|
||||||
const TEST_MERGED_CALENDARS_DIR = path.join(__dirname, 'tests');
|
|
||||||
const TEST_CALENDARS_DIR = 'test_calendars';
|
|
||||||
const EXPECTED_OUTPUTS_DIR = 'expected_outputs';
|
|
||||||
let server;
|
|
||||||
describe('Calendar Merging API', () => {
|
|
||||||
beforeAll(async () => {
|
|
||||||
console.log(`Test Merged Calendars Directory: ${TEST_MERGED_CALENDARS_DIR}`);
|
|
||||||
// Ensure the test merged calendars directory exists
|
|
||||||
if (!fs.existsSync(TEST_MERGED_CALENDARS_DIR)) {
|
|
||||||
fs.mkdirSync(TEST_MERGED_CALENDARS_DIR, { recursive: true });
|
|
||||||
}
|
|
||||||
// Change the working directory to the test-specific directory
|
|
||||||
process.chdir(TEST_MERGED_CALENDARS_DIR);
|
|
||||||
console.log(process.cwd());
|
|
||||||
// Start the server
|
|
||||||
server = app.listen(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
afterAll(async () => {
|
|
||||||
// Ensure the server is closed before cleanup
|
|
||||||
await new Promise(resolve => server.close(resolve));
|
|
||||||
|
|
||||||
// Optional: Add a delay to ensure all handles are released
|
|
||||||
await new Promise(resolve => setTimeout(resolve, 100));
|
|
||||||
});
|
|
||||||
|
|
||||||
const loadCalendarFile = (filename) => {
|
|
||||||
return path.join(__dirname, TEST_CALENDARS_DIR, filename);
|
|
||||||
};
|
|
||||||
|
|
||||||
const loadExpectedOutput = (filename) => {
|
|
||||||
return fs.readFileSync(path.join(EXPECTED_OUTPUTS_DIR, filename), 'utf8');
|
|
||||||
};
|
|
||||||
|
|
||||||
test('Merge date-based calendar', async () => {
|
|
||||||
const response = await request(server)
|
|
||||||
.post('/merge')
|
|
||||||
.send({
|
|
||||||
linkGroupName: 'Date Based Calendar',
|
|
||||||
calendars: [
|
|
||||||
{
|
|
||||||
url: loadCalendarFile('ferien_bayern_2023.ics'),
|
|
||||||
prefix: 'Ferien_Bayern_2023',
|
|
||||||
override: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: loadCalendarFile('US_Holidays.ics'),
|
|
||||||
prefix: 'US_holidays',
|
|
||||||
override: false,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
expect(response.status).toBe(200);
|
|
||||||
expect(response.body.url).toMatch(/calendar\/Date_Based_Calendar/);
|
|
||||||
|
|
||||||
// Check if the file was created in the test directory
|
|
||||||
const filePath = path.join(TEST_MERGED_CALENDARS_DIR, 'Date_Based_Calendar.ics');
|
|
||||||
expect(fs.existsSync(filePath)).toBe(true);
|
|
||||||
|
|
||||||
// Load expected output and compare
|
|
||||||
const expectedOutput = loadExpectedOutput('Date_Based_Calendar.ics');
|
|
||||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
|
||||||
// expect(actualOutput).toBe(expectedOutput);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Merge time-based calendar', async () => {
|
|
||||||
const response = await request(server)
|
|
||||||
.post('/merge')
|
|
||||||
.send({
|
|
||||||
linkGroupName: 'Time Based Calendar',
|
|
||||||
calendars: [
|
|
||||||
{
|
|
||||||
url: loadCalendarFile('other_work.ics'),
|
|
||||||
prefix: 'other_work',
|
|
||||||
override: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: loadCalendarFile('work.ics'),
|
|
||||||
prefix: 'work',
|
|
||||||
override: false,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
|
||||||
expect(response.body.url).toMatch(/calendar\/Time_Based_Calendar/);
|
|
||||||
|
|
||||||
// Check if the file was created in the test directory
|
|
||||||
const filePath = path.join(TEST_MERGED_CALENDARS_DIR, 'Time_Based_Calendar.ics');
|
|
||||||
expect(fs.existsSync(filePath)).toBe(true);
|
|
||||||
|
|
||||||
// Load expected output and compare
|
|
||||||
const expectedOutput = loadExpectedOutput('Time_Based_Calendar.ics');
|
|
||||||
const actualOutput = fs.readFileSync (filePath, 'utf8');
|
|
||||||
// expect(actualOutput).toBe(expectedOutput);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Merge calendar without prefix', async () => {
|
|
||||||
const response = await request(server)
|
|
||||||
.post('/merge')
|
|
||||||
.send({
|
|
||||||
linkGroupName: 'No Prefix Calendar',
|
|
||||||
calendars: [
|
|
||||||
{
|
|
||||||
url: loadCalendarFile('San_Francisco_Public_Holidays.ics'),
|
|
||||||
prefix: '',
|
|
||||||
override: false,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
|
||||||
expect(response.body.url).toMatch(/calendar\/No_Prefix_Calendar/);
|
|
||||||
|
|
||||||
// Check if the file was created in the test directory
|
|
||||||
const filePath = path.join(TEST_MERGED_CALENDARS_DIR, 'No_Prefix_Calendar.ics');
|
|
||||||
expect(fs.existsSync(filePath)).toBe(true);
|
|
||||||
|
|
||||||
// Load expected output and compare
|
|
||||||
const expectedOutput = loadExpectedOutput('No_Prefix_Calendar.ics');
|
|
||||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
|
||||||
// expect(actualOutput).toBe(expectedOutput);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Merge calendar with override', async () => {
|
|
||||||
const response = await request(server)
|
|
||||||
.post('/merge')
|
|
||||||
.send({
|
|
||||||
linkGroupName: 'Override Calendar',
|
|
||||||
calendars: [
|
|
||||||
{
|
|
||||||
url: loadCalendarFile('San_Francisco_Public_Holidays.ics'),
|
|
||||||
prefix: 'Override Event',
|
|
||||||
override: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(response.status).toBe(200);
|
|
||||||
expect(response.body.url).toMatch(/calendar\/Override_Calendar/);
|
|
||||||
|
|
||||||
// Check if the file was created in the test directory
|
|
||||||
const filePath = path.join(TEST_MERGED_CALENDARS_DIR, 'Override_Calendar.ics');
|
|
||||||
expect(fs.existsSync(filePath)).toBe(true);
|
|
||||||
|
|
||||||
// Load expected output and compare
|
|
||||||
const expectedOutput = loadExpectedOutput('Override_Calendar.ics');
|
|
||||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
|
||||||
// expect(actualOutput).toBe(expectedOutput);
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Use an official Node.js runtime as a parent image
|
||||||
|
FROM node:18-alpine
|
||||||
|
|
||||||
|
# Set working directory inside the container
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Copy package.json and package-lock.json for installing dependencies
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
RUN npm install --production
|
||||||
|
|
||||||
|
# Copy the rest of the project files
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Expose the port your application runs on (if applicable)
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
# Command to run the application
|
||||||
|
CMD ["node", "src/app.js"]
|
|
@ -1,5 +0,0 @@
|
||||||
module.exports = {
|
|
||||||
transform: {
|
|
||||||
'^.+\\.jsx?$': 'babel-jest',
|
|
||||||
},
|
|
||||||
};
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
export default {
|
||||||
|
transform: {
|
||||||
|
'^.+\\.jsx?$': 'babel-jest',
|
||||||
|
},
|
||||||
|
moduleFileExtensions: ['js', 'jsx'],
|
||||||
|
testEnvironment: 'node',
|
||||||
|
};
|
File diff suppressed because it is too large
Load Diff
23
package.json
23
package.json
|
@ -1,28 +1,31 @@
|
||||||
{
|
{
|
||||||
"name": "calendar-merger",
|
"name": "calendar-merger",
|
||||||
"version": "1.0.0",
|
"version": "1.1.0",
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node server.js",
|
"start": "node src/app.js",
|
||||||
"test": "jest"
|
"test": "node --experimental-vm-modules ./node_modules/jest/bin/jest.js ./test"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.7.7",
|
"axios": "^1.7.7",
|
||||||
"calendar-merger": "file:",
|
"calendar-merger": "file:",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"ical": "^0.8.0",
|
|
||||||
"ical-generator": "^0.2.10",
|
|
||||||
"ical.js": "^2.1.0",
|
"ical.js": "^2.1.0",
|
||||||
"node-cron": "^2.0.3",
|
"node-cron": "^2.0.3",
|
||||||
"supertest": "^7.0.0"
|
"supertest": "^7.0.0",
|
||||||
|
"winston": "^3.17.0"
|
||||||
},
|
},
|
||||||
"description": "cal merge",
|
"description": "calmerger",
|
||||||
"main": "script.js",
|
"main": "server.js",
|
||||||
"author": "Ryan",
|
"author": "Ryan",
|
||||||
|
"type": "module",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@babel/core": "^7.26.0",
|
||||||
|
"@babel/plugin-transform-modules-commonjs": "^7.25.9",
|
||||||
"@babel/preset-env": "^7.26.0",
|
"@babel/preset-env": "^7.26.0",
|
||||||
"@babel/register": "^7.25.9",
|
"@babel/register": "^7.25.9",
|
||||||
"jest": "^29.7.0"
|
"babel-jest": "^29.7.0",
|
||||||
|
"jest": "^29.7.0",
|
||||||
|
"rewire": "^7.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
250
server.js
250
server.js
|
@ -1,250 +0,0 @@
|
||||||
import express from 'express';
|
|
||||||
import ICAL from 'ical.js';
|
|
||||||
import fs from 'fs';
|
|
||||||
import axios from 'axios';
|
|
||||||
import path from 'path';
|
|
||||||
import icalGenerator from 'ical-generator';
|
|
||||||
|
|
||||||
const app = express();
|
|
||||||
app.use(express.json());
|
|
||||||
|
|
||||||
// Determine the merged calendars directory based on the environment
|
|
||||||
const MERGED_CALENDARS_DIR = 'calendar';
|
|
||||||
console.log(`Merged calendars directory: ${MERGED_CALENDARS_DIR} under ${process.cwd()}`);
|
|
||||||
|
|
||||||
// Ensure the merged calendars directory exists
|
|
||||||
fs.mkdirSync(MERGED_CALENDARS_DIR, { recursive: true });
|
|
||||||
|
|
||||||
app.get('/script.js', (req, res) => {
|
|
||||||
res.setHeader('Content-Type', 'application/javascript');
|
|
||||||
res.sendFile('script.js', { root: '.' });
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/', (req, res) => {
|
|
||||||
res.sendFile('index.html', { root: '.' });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Function to sanitize the linkGroupName for use as a filename
|
|
||||||
function sanitizeFilename(filename) {
|
|
||||||
return filename.replace(/[<>:"/\\|?* ]/g, '_'); // Replace invalid characters with underscores
|
|
||||||
}
|
|
||||||
|
|
||||||
// Merge calendars endpoint
|
|
||||||
app.post('/merge', async (req, res) => {
|
|
||||||
const { linkGroupName, calendars } = req.body;
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Validate the input
|
|
||||||
if (!linkGroupName || !calendars || !Array.isArray(calendars) || calendars.length === 0) {
|
|
||||||
return res.status(400).json({ error: 'Invalid input. Please provide a linkGroupName and at least one calendar.' });
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sanitize the linkGroupName to create a valid filename
|
|
||||||
const sanitizedLinkGroupName = sanitizeFilename(linkGroupName);
|
|
||||||
const filename = `${sanitizedLinkGroupName}.ics`;
|
|
||||||
|
|
||||||
// Fetch calendar data from URLs or load from local files
|
|
||||||
const promises = calendars.map((calendar) => {
|
|
||||||
// Check if calendar URL is a file path or a URL
|
|
||||||
const isFilePath = !calendar.url.startsWith('http');
|
|
||||||
if (isFilePath) {
|
|
||||||
try{
|
|
||||||
// Read calendar data from local file
|
|
||||||
const data = fs.readFileSync(path.resolve(calendar.url), 'utf-8');
|
|
||||||
return Promise.resolve({
|
|
||||||
data: data,
|
|
||||||
prefix: calendar.prefix,
|
|
||||||
override: calendar.override,
|
|
||||||
});
|
|
||||||
|
|
||||||
} catch (error){
|
|
||||||
console.error(`Error reading calendar file ${calendar.url}:`, error);
|
|
||||||
return Promise.resolve(null);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Fetch calendar data from URL
|
|
||||||
return axios.get(calendar.url)
|
|
||||||
.then((response) => {
|
|
||||||
return {
|
|
||||||
data: response.data,
|
|
||||||
prefix: calendar.prefix,
|
|
||||||
override: calendar.override,
|
|
||||||
};
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
console.error(`Error fetching calendar from ${calendar.url}:`, error);
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const results = await Promise.all(promises);
|
|
||||||
// Filter out any failed requests
|
|
||||||
const validResults = results.filter((result) => result !== null);
|
|
||||||
|
|
||||||
// Create a new iCalendar instance
|
|
||||||
const calendar = icalGenerator({ name: linkGroupName });
|
|
||||||
|
|
||||||
// Parse calendar data
|
|
||||||
validResults.forEach((result) => {
|
|
||||||
const parsed = ICAL.parse(result.data);
|
|
||||||
const component = new ICAL.Component(parsed);
|
|
||||||
const events = component.getAllSubcomponents('vevent');
|
|
||||||
|
|
||||||
events.forEach((event) => {
|
|
||||||
const vevent = new ICAL.Event(event);
|
|
||||||
const start = vevent.startDate.toJSDate();
|
|
||||||
const end = vevent.endDate.toJSDate();
|
|
||||||
const summary = result.override ? result.prefix : `${result.prefix} ${vevent.summary}`;
|
|
||||||
|
|
||||||
if (vevent.startDate.isDate) {
|
|
||||||
calendar.createEvent({
|
|
||||||
start: start.toISOString().split('T')[0],
|
|
||||||
end: end.toISOString().split('T')[0],
|
|
||||||
summary: summary,
|
|
||||||
allDay: true,
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
calendar.createEvent({
|
|
||||||
start: start,
|
|
||||||
end: end,
|
|
||||||
summary: summary,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// Save the calendar to a file
|
|
||||||
const filePath = `${MERGED_CALENDARS_DIR}/${filename}`;
|
|
||||||
fs.writeFileSync(filePath, calendar.toString());
|
|
||||||
console.log(`Calendar saved to ${filePath}`);
|
|
||||||
|
|
||||||
// Save the user input and sanitizedLinkGroupName in a separate JSON file
|
|
||||||
saveCalendarData(sanitizedLinkGroupName, linkGroupName, calendars);
|
|
||||||
|
|
||||||
res.json({ url: `${req.protocol}://${req.get('host')}/calendar/${sanitizedLinkGroupName}` });
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Error merging calendars:', error);
|
|
||||||
res.status(500).json({ error: 'Failed to merge calendars' });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Serve the merged calendar file and refresh if older than an hour
|
|
||||||
app.get('/calendar/:name', async (req, res) => {
|
|
||||||
const calendarName = req.params.name;
|
|
||||||
const icsFilePath = path.resolve(MERGED_CALENDARS_DIR, `${calendarName}.ics`);
|
|
||||||
const jsonFilePath = path.resolve(MERGED_CALENDARS_DIR, `${calendarName}.json`);
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Check if the .ics file exists
|
|
||||||
if (fs.existsSync(icsFilePath)) {
|
|
||||||
const stats = fs.statSync(icsFilePath);
|
|
||||||
const lastModified = new Date(stats.mtime);
|
|
||||||
const now = new Date();
|
|
||||||
// Check if the file is older than one hour
|
|
||||||
if (now - lastModified > 60 * 60 * 1000) {
|
|
||||||
console .log('Refreshing calendar data...');
|
|
||||||
|
|
||||||
// Read the JSON file to get the source URL and other details
|
|
||||||
const jsonData = JSON.parse(fs.readFileSync(jsonFilePath, 'utf8'));
|
|
||||||
const { calendars } = jsonData;
|
|
||||||
|
|
||||||
// Fetch calendar data for each merged calendar
|
|
||||||
const promises = calendars.map((calendar) => {
|
|
||||||
return axios.get(calendar.url)
|
|
||||||
.then((response) => {
|
|
||||||
return {
|
|
||||||
data: response.data,
|
|
||||||
prefix: calendar.prefix,
|
|
||||||
override: calendar.override,
|
|
||||||
};
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
console.error(error);
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const results = await Promise.all(promises);
|
|
||||||
// Filter out any failed requests
|
|
||||||
const validResults = results.filter((result) => result !== null);
|
|
||||||
|
|
||||||
// Create a new iCalendar instance
|
|
||||||
const calendar = icalGenerator({ name: calendarName });
|
|
||||||
|
|
||||||
// Parse calendar data
|
|
||||||
validResults.forEach((result) => {
|
|
||||||
const parsed = ICAL.parse(result.data);
|
|
||||||
const component = new ICAL.Component(parsed);
|
|
||||||
const events = component.getAllSubcomponents('vevent');
|
|
||||||
|
|
||||||
events.forEach((event) => {
|
|
||||||
const vevent = new ICAL.Event(event);
|
|
||||||
const start = vevent.startDate.toJSDate();
|
|
||||||
const end = vevent.endDate.toJSDate();
|
|
||||||
const summary = result.override ? result.prefix : `${result.prefix} ${vevent.summary}`;
|
|
||||||
|
|
||||||
if (vevent.startDate.isDate) {
|
|
||||||
calendar.createEvent({
|
|
||||||
start: start.toISOString().split('T')[0],
|
|
||||||
end: end.toISOString().split('T')[0],
|
|
||||||
summary: summary,
|
|
||||||
allDay: true,
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
calendar.createEvent({
|
|
||||||
start: start,
|
|
||||||
end: end,
|
|
||||||
summary: summary,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Save the calendar to a file
|
|
||||||
fs.writeFileSync(icsFilePath, calendar.toString());
|
|
||||||
|
|
||||||
console.log('Calendar data refreshed.');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return res.status(404).json({ error: 'Calendar not found.' });
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the contents of the .ics file
|
|
||||||
res.setHeader('Content-Type', 'text/calendar');
|
|
||||||
res.sendFile(icsFilePath);
|
|
||||||
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error);
|
|
||||||
res.status(500).json({ error: 'Failed to retrieve calendar data.' });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
//function to save calendar data to seperate .json files
|
|
||||||
function saveCalendarData(calendarId, linkGroupName, calendars) {
|
|
||||||
const calendarFile = `${MERGED_CALENDARS_DIR}/${calendarId}.json`;
|
|
||||||
const calendarData = {
|
|
||||||
id: calendarId,
|
|
||||||
linkGroupName: linkGroupName,
|
|
||||||
calendars: calendars
|
|
||||||
};
|
|
||||||
|
|
||||||
try {
|
|
||||||
fs.writeFileSync(calendarFile, JSON.stringify(calendarData, null, 2));
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Error writing to calendar file:', error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start the server
|
|
||||||
if (process.env.NODE_ENV !== 'test') {
|
|
||||||
const port = 3000;
|
|
||||||
app.listen(port, () => {
|
|
||||||
console.log(`Server started on port ${port}`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export default app;
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
import server from './server.js';
|
||||||
|
|
||||||
|
const port = process.env.NODE_PORT || 3000;
|
||||||
|
server.listen(port, () => {
|
||||||
|
console.log(`Server started on port ${port}`);
|
||||||
|
});
|
|
@ -0,0 +1,123 @@
|
||||||
|
import ICAL from './lib/ical.timezones.js';
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
import axios from 'axios';
|
||||||
|
import logger from './logger.js';
|
||||||
|
|
||||||
|
export const MERGED_CALENDARS_DIR = path.join(process.cwd(), 'calendar');
|
||||||
|
|
||||||
|
// Ensure the merged calendars directory exists
|
||||||
|
fs.mkdirSync(MERGED_CALENDARS_DIR, { recursive: true });
|
||||||
|
|
||||||
|
// Utility to sanitize filenames
|
||||||
|
export const sanitizeFilename = (filename) => filename.replace(/[<>:"/\\|?* ]/g, '_');
|
||||||
|
|
||||||
|
// Fetch calendar data from URL or file
|
||||||
|
export async function fetchCalendarData(calendar) {
|
||||||
|
const isFilePath = !calendar.url.startsWith('http');
|
||||||
|
try {
|
||||||
|
if (isFilePath) {
|
||||||
|
// logger.debug(`Reading calendar from file: ${calendar.url}`);
|
||||||
|
return { data: fs.readFileSync(path.resolve(calendar.url), 'utf-8'), ...calendar };
|
||||||
|
} else {
|
||||||
|
// logger.debug(`Fetching calendar from URL: ${calendar.url}`);
|
||||||
|
const response = await axios.get(calendar.url);
|
||||||
|
return { data: response.data, ...calendar };
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(`Error retrieving calendar from ${calendar.url}: ${error.message}`);
|
||||||
|
throw new Error(`Error retrieving calendar from ${calendar.url}: ${error.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a top-level VCALENDAR component
|
||||||
|
export function createCalendarComponent(name) {
|
||||||
|
logger.info(`Creating calendar component with name: ${name}`);
|
||||||
|
const calendarComponent = new ICAL.Component(['vcalendar', [], []]);
|
||||||
|
calendarComponent.updatePropertyWithValue('name', name);
|
||||||
|
calendarComponent.updatePropertyWithValue('prodid', '-//CalMerge//Calendar Merger 1.0//EN');
|
||||||
|
calendarComponent.updatePropertyWithValue('version', '2.0');
|
||||||
|
calendarComponent.updatePropertyWithValue('calscale', 'GREGORIAN');
|
||||||
|
return calendarComponent;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add events to the calendar component
|
||||||
|
export function addEventsToCalendar(newCalendar, calendars) {
|
||||||
|
let defaultTimeZone = null; // To store the first found X-WR-TIMEZONE
|
||||||
|
|
||||||
|
calendars.forEach((calendarRaw) => {
|
||||||
|
try {
|
||||||
|
const { data, prefix, override } = calendarRaw; // Extract prefix and override
|
||||||
|
const calendar = new ICAL.Component(ICAL.parse(calendarRaw.data));
|
||||||
|
|
||||||
|
// Extract METHOD from the parsed data (if available)
|
||||||
|
const method = calendar.getFirstPropertyValue('method');
|
||||||
|
if (method) {
|
||||||
|
logger.info(`Extracted METHOD: ${method}`);
|
||||||
|
// Only add the METHOD property once
|
||||||
|
if (!newCalendar.getFirstPropertyValue('method')) {
|
||||||
|
newCalendar.updatePropertyWithValue('method', method.toUpperCase());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Extract X-WR-TIMEZONE if available
|
||||||
|
const wrTimeZone = calendar.getFirstPropertyValue('x-wr-timezone');
|
||||||
|
if (wrTimeZone) {
|
||||||
|
logger.info(`Extracted X-WR-TIMEZONE: ${wrTimeZone}`);
|
||||||
|
// Set it as the default if not already set
|
||||||
|
if (!defaultTimeZone) {
|
||||||
|
defaultTimeZone = wrTimeZone;
|
||||||
|
if (!newCalendar.getFirstPropertyValue('x-wr-timezone')) {
|
||||||
|
newCalendar.updatePropertyWithValue('x-wr-timezone', defaultTimeZone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract and add VTIMEZONE components
|
||||||
|
const timezones = calendar.getAllSubcomponents('vtimezone');
|
||||||
|
timezones.forEach((timezone) => {
|
||||||
|
const tzid = timezone.getFirstPropertyValue('tzid');
|
||||||
|
if (!newCalendar.getFirstSubcomponent((comp) => comp.name === 'vtimezone' && comp.getFirstPropertyValue('tzid') === tzid)) {
|
||||||
|
logger.debug(`Adding VTIMEZONE: ${tzid}`);
|
||||||
|
newCalendar.addSubcomponent(timezone);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Process VEVENT components
|
||||||
|
calendar.getAllSubcomponents('vevent').forEach((vevent) => {
|
||||||
|
const event = new ICAL.Event(vevent);
|
||||||
|
const newEvent = new ICAL.Event();
|
||||||
|
|
||||||
|
newEvent.uid = event.uid;
|
||||||
|
newEvent.startDate = event.startDate;
|
||||||
|
newEvent.endDate = event.endDate;
|
||||||
|
|
||||||
|
const dtstamp = vevent.getFirstPropertyValue('dtstamp');
|
||||||
|
if (dtstamp) newEvent.component.updatePropertyWithValue('dtstamp', dtstamp);
|
||||||
|
|
||||||
|
if (override) {
|
||||||
|
newEvent.summary = prefix || 'Busy';
|
||||||
|
} else {
|
||||||
|
newEvent.summary = prefix ? `${prefix} ${event.summary}` : event.summary;
|
||||||
|
if (event.location) newEvent.location = event.location;
|
||||||
|
}
|
||||||
|
|
||||||
|
const rrule = vevent.getFirstPropertyValue('rrule');
|
||||||
|
if (rrule) newEvent.component.updatePropertyWithValue('rrule', rrule);
|
||||||
|
|
||||||
|
// Add the VEVENT to the calendar
|
||||||
|
newCalendar.addSubcomponent(newEvent.component);
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(`Error processing calendar: ${error.message}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save calendar data to file
|
||||||
|
export function saveCalendarFile(filename, content) {
|
||||||
|
const normalizedContent = content.replace(/\r?\n/g, '\r\n').trimEnd(); // Normalize to CRLF
|
||||||
|
const filePath = path.join(MERGED_CALENDARS_DIR, filename);
|
||||||
|
logger.info(`Saving calendar data to file: ${filePath}`);
|
||||||
|
fs.writeFileSync(filePath, normalizedContent);
|
||||||
|
return filePath;
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,348 @@
|
||||||
|
import { createRequire } from 'module';
|
||||||
|
const require = createRequire(import.meta.url);
|
||||||
|
|
||||||
|
const ICAL = require('./ical.cjs');
|
||||||
|
(function() {
|
||||||
|
function register(tzdata) { ICAL.TimezoneService.register(ICAL.Component.fromString("BEGIN:VTIMEZONE\r\n" + tzdata + "\r\nEND:VTIMEZONE")) };
|
||||||
|
ICAL.TimezoneService.IANA_TZDB_VERSION = "2024b";
|
||||||
|
register("TZID:Africa/Abidjan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Abidjan\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Algiers\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Algiers\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Bissau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Bissau\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Cairo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Cairo\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700424T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1FR\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701030T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Casablanca\r\nTZUNTIL:20870511T020001Z\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Casablanca\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Ceuta\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Ceuta\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/El_Aaiun\r\nTZUNTIL:20870511T020001Z\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/El_Aaiun\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Johannesburg\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Johannesburg\r\nBEGIN:STANDARD\r\nTZNAME:SAST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Juba\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Juba\r\nBEGIN:STANDARD\r\nTZNAME:CAT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Khartoum\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Khartoum\r\nBEGIN:STANDARD\r\nTZNAME:CAT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Lagos\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Lagos\r\nBEGIN:STANDARD\r\nTZNAME:WAT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Maputo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Maputo\r\nBEGIN:STANDARD\r\nTZNAME:CAT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Monrovia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Monrovia\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Nairobi\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Nairobi\r\nBEGIN:STANDARD\r\nTZNAME:EAT\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Ndjamena\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Ndjamena\r\nBEGIN:STANDARD\r\nTZNAME:WAT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Sao_Tome\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Sao_Tome\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Tripoli\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Tripoli\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Tunis\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Tunis\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Africa/Windhoek\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Windhoek\r\nBEGIN:STANDARD\r\nTZNAME:CAT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Adak\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Adak\r\nBEGIN:DAYLIGHT\r\nTZNAME:HDT\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-0900\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:HST\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-1000\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Anchorage\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Anchorage\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Araguaina\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Araguaina\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/Buenos_Aires\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Buenos_Aires\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/Catamarca\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Catamarca\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/Cordoba\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Cordoba\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/Jujuy\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Jujuy\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/La_Rioja\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/La_Rioja\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/Mendoza\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Mendoza\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/Rio_Gallegos\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Rio_Gallegos\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/Salta\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Salta\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/San_Juan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/San_Juan\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/San_Luis\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/San_Luis\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/Tucuman\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Tucuman\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Argentina/Ushuaia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Ushuaia\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Asuncion\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Asuncion\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19701004T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19700322T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=4SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Bahia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Bahia\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Bahia_Banderas\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Bahia_Banderas\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Barbados\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Barbados\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Belem\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Belem\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Belize\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Belize\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Boa_Vista\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Boa_Vista\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Bogota\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Bogota\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Boise\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Boise\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Cambridge_Bay\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Cambridge_Bay\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Campo_Grande\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Campo_Grande\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Cancun\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Cancun\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Caracas\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Caracas\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Cayenne\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Cayenne\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Chicago\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Chicago\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Chihuahua\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Chihuahua\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Ciudad_Juarez\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Ciudad_Juarez\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Costa_Rica\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Costa_Rica\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Cuiaba\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Cuiaba\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Danmarkshavn\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Danmarkshavn\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Dawson\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Dawson\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Dawson_Creek\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Dawson_Creek\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Denver\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Denver\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Detroit\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Detroit\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Edmonton\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Edmonton\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Eirunepe\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Eirunepe\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/El_Salvador\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/El_Salvador\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Fort_Nelson\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Fort_Nelson\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Fortaleza\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Fortaleza\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Glace_Bay\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Glace_Bay\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Goose_Bay\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Goose_Bay\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:America/Grand_Turk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Grand_Turk\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:America/Guatemala\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Guatemala\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Guayaquil\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Guayaquil\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Guyana\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Guyana\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Halifax\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Halifax\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Havana\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Havana\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:America/Hermosillo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Hermosillo\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Indiana/Indianapolis\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Indianapolis\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Indiana/Knox\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Knox\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Indiana/Marengo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Marengo\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Indiana/Petersburg\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Petersburg\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Indiana/Tell_City\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Tell_City\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Indiana/Vevay\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Vevay\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Indiana/Vincennes\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Vincennes\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Indiana/Winamac\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Winamac\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:America/Inuvik\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Inuvik\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Iqaluit\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Iqaluit\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Jamaica\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Jamaica\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Juneau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Juneau\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Kentucky/Louisville\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Kentucky/Louisville\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Kentucky/Monticello\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Kentucky/Monticello\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/La_Paz\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/La_Paz\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Lima\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Lima\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Los_Angeles\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Los_Angeles\r\nBEGIN:DAYLIGHT\r\nTZNAME:PDT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:PST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Maceio\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Maceio\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Managua\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Managua\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Manaus\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Manaus\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Martinique\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Martinique\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Matamoros\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Matamoros\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Mazatlan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Mazatlan\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Menominee\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Menominee\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Merida\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Merida\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Metlakatla\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Metlakatla\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Mexico_City\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Mexico_City\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Miquelon\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Miquelon\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0200\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0300\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Moncton\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Moncton\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Monterrey\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Monterrey\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Montevideo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Montevideo\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/New_York\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/New_York\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Nome\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Nome\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Noronha\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Noronha\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/North_Dakota/Beulah\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/North_Dakota/Beulah\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/North_Dakota/Center\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/North_Dakota/Center\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/North_Dakota/New_Salem\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/North_Dakota/New_Salem\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Nuuk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Nuuk\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0100\r\nDTSTART:19700328T230000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0200\r\nDTSTART:19701025T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Ojinaga\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Ojinaga\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Panama\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Panama\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Paramaribo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Paramaribo\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Phoenix\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Phoenix\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Port-au-Prince\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Port-au-Prince\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Porto_Velho\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Porto_Velho\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Puerto_Rico\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Puerto_Rico\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Punta_Arenas\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Punta_Arenas\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Rankin_Inlet\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Rankin_Inlet\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Recife\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Recife\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Regina\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Regina\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Resolute\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Resolute\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:America/Rio_Branco\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Rio_Branco\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Santarem\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Santarem\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Santiago\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Santiago\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19700405T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700906T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:America/Santo_Domingo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Santo_Domingo\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Sao_Paulo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Sao_Paulo\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Scoresbysund\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Scoresbysund\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0200\r\nDTSTART:19701025T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0100\r\nDTSTART:19700328T230000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:America/Sitka\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Sitka\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/St_Johns\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/St_Johns\r\nBEGIN:STANDARD\r\nTZNAME:NST\r\nTZOFFSETFROM:-0230\r\nTZOFFSETTO:-0330\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:NDT\r\nTZOFFSETFROM:-0330\r\nTZOFFSETTO:-0230\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:America/Swift_Current\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Swift_Current\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Tegucigalpa\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Tegucigalpa\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Thule\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Thule\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Tijuana\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Tijuana\r\nBEGIN:DAYLIGHT\r\nTZNAME:PDT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:PST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Toronto\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Toronto\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Vancouver\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Vancouver\r\nBEGIN:DAYLIGHT\r\nTZNAME:PDT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:PST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Whitehorse\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Whitehorse\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Winnipeg\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Winnipeg\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:America/Yakutat\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Yakutat\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Antarctica/Casey\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Casey\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Antarctica/Davis\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Davis\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Antarctica/Macquarie\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Macquarie\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:AEDT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Antarctica/Mawson\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Mawson\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Antarctica/Palmer\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Palmer\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Antarctica/Rothera\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Rothera\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Antarctica/Troll\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Troll\r\nBEGIN:DAYLIGHT\r\nTZNAME:+02\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:+00\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Antarctica/Vostok\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Vostok\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Almaty\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Almaty\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Amman\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Amman\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Anadyr\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Anadyr\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Aqtau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Aqtau\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Aqtobe\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Aqtobe\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Ashgabat\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Ashgabat\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Atyrau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Atyrau\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Baghdad\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Baghdad\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Baku\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Baku\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Bangkok\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Bangkok\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Barnaul\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Barnaul\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Beirut\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Beirut\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Bishkek\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Bishkek\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Chita\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Chita\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Colombo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Colombo\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0530\r\nTZOFFSETTO:+0530\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Damascus\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Damascus\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Dhaka\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Dhaka\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Dili\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Dili\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Dubai\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Dubai\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Dushanbe\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Dushanbe\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Famagusta\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Famagusta\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Gaza\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Gaza\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700328T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Hebron\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Hebron\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700328T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Ho_Chi_Minh\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Ho_Chi_Minh\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Hong_Kong\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Hong_Kong\r\nBEGIN:STANDARD\r\nTZNAME:HKT\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Hovd\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Hovd\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Irkutsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Irkutsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Jakarta\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Jakarta\r\nBEGIN:STANDARD\r\nTZNAME:WIB\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Jayapura\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Jayapura\r\nBEGIN:STANDARD\r\nTZNAME:WIT\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Jerusalem\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Jerusalem\r\nBEGIN:DAYLIGHT\r\nTZNAME:IDT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700327T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:IST\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Kabul\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Kabul\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0430\r\nTZOFFSETTO:+0430\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Kamchatka\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Kamchatka\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Karachi\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Karachi\r\nBEGIN:STANDARD\r\nTZNAME:PKT\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Kathmandu\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Kathmandu\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0545\r\nTZOFFSETTO:+0545\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Khandyga\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Khandyga\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Kolkata\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Kolkata\r\nBEGIN:STANDARD\r\nTZNAME:IST\r\nTZOFFSETFROM:+0530\r\nTZOFFSETTO:+0530\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Krasnoyarsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Krasnoyarsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Kuching\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Kuching\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Macau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Macau\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Magadan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Magadan\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Makassar\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Makassar\r\nBEGIN:STANDARD\r\nTZNAME:WITA\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Manila\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Manila\r\nBEGIN:STANDARD\r\nTZNAME:PST\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Nicosia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Nicosia\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Asia/Novokuznetsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Novokuznetsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Novosibirsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Novosibirsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Omsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Omsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Oral\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Oral\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Pontianak\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Pontianak\r\nBEGIN:STANDARD\r\nTZNAME:WIB\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Pyongyang\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Pyongyang\r\nBEGIN:STANDARD\r\nTZNAME:KST\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Qatar\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Qatar\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Qostanay\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Qostanay\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Qyzylorda\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Qyzylorda\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Riyadh\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Riyadh\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Sakhalin\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Sakhalin\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Samarkand\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Samarkand\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Seoul\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Seoul\r\nBEGIN:STANDARD\r\nTZNAME:KST\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Shanghai\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Shanghai\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Singapore\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Singapore\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Srednekolymsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Srednekolymsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Taipei\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Taipei\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Tashkent\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Tashkent\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Tbilisi\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Tbilisi\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Tehran\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Tehran\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0330\r\nTZOFFSETTO:+0330\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Thimphu\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Thimphu\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Tokyo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Tokyo\r\nBEGIN:STANDARD\r\nTZNAME:JST\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Tomsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Tomsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Ulaanbaatar\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Ulaanbaatar\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Urumqi\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Urumqi\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Ust-Nera\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Ust-Nera\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Vladivostok\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Vladivostok\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Yakutsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Yakutsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Yangon\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Yangon\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0630\r\nTZOFFSETTO:+0630\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Yekaterinburg\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Yekaterinburg\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Asia/Yerevan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Yerevan\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Atlantic/Azores\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Azores\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19700329T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:-0100\r\nDTSTART:19701025T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Atlantic/Bermuda\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Bermuda\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Atlantic/Canary\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Canary\r\nBEGIN:DAYLIGHT\r\nTZNAME:WEST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:WET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Atlantic/Cape_Verde\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Cape_Verde\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Atlantic/Faroe\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Faroe\r\nBEGIN:DAYLIGHT\r\nTZNAME:WEST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:WET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Atlantic/Madeira\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Madeira\r\nBEGIN:DAYLIGHT\r\nTZNAME:WEST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:WET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Atlantic/South_Georgia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/South_Georgia\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Atlantic/Stanley\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Stanley\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Australia/Adelaide\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Adelaide\r\nBEGIN:STANDARD\r\nTZNAME:ACST\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+0930\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:ACDT\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+1030\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Australia/Brisbane\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Brisbane\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Australia/Broken_Hill\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Broken_Hill\r\nBEGIN:STANDARD\r\nTZNAME:ACST\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+0930\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:ACDT\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+1030\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Australia/Darwin\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Darwin\r\nBEGIN:STANDARD\r\nTZNAME:ACST\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+0930\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Australia/Eucla\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Eucla\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0845\r\nTZOFFSETTO:+0845\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Australia/Hobart\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Hobart\r\nBEGIN:DAYLIGHT\r\nTZNAME:AEDT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Australia/Lindeman\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Lindeman\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Australia/Lord_Howe\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Lord_Howe\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1030\r\nDTSTART:19700405T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+1100\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Australia/Melbourne\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Melbourne\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:AEDT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Australia/Perth\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Perth\r\nBEGIN:STANDARD\r\nTZNAME:AWST\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Australia/Sydney\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Sydney\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:AEDT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Etc/GMT\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+1\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+1\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+10\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+10\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+11\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+11\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+12\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+12\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1200\r\nTZOFFSETTO:-1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+2\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+2\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+3\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+3\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+4\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+4\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+5\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+5\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+6\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+6\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+7\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+7\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+8\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+8\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT+9\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+9\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-1\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-1\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-10\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-10\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-11\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-11\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-12\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-12\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-13\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-13\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-14\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-14\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1400\r\nTZOFFSETTO:+1400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-2\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-2\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-3\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-3\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-4\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-4\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-5\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-5\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-6\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-6\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-7\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-7\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-8\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-8\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/GMT-9\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-9\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Etc/UTC\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/UTC\r\nBEGIN:STANDARD\r\nTZNAME:UTC\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Andorra\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Andorra\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Astrakhan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Astrakhan\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Athens\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Athens\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Belgrade\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Belgrade\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Berlin\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Berlin\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Brussels\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Brussels\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Bucharest\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Bucharest\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Budapest\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Budapest\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Chisinau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Chisinau\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Dublin\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Dublin\r\nBEGIN:STANDARD\r\nTZNAME:IST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Europe/Gibraltar\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Gibraltar\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Helsinki\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Helsinki\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Istanbul\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Istanbul\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Kaliningrad\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Kaliningrad\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Kirov\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Kirov\r\nBEGIN:STANDARD\r\nTZNAME:MSK\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Kyiv\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Kyiv\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Europe/Lisbon\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Lisbon\r\nBEGIN:STANDARD\r\nTZNAME:WET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:WEST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Europe/London\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/London\r\nBEGIN:DAYLIGHT\r\nTZNAME:BST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Madrid\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Madrid\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Malta\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Malta\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Minsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Minsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Moscow\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Moscow\r\nBEGIN:STANDARD\r\nTZNAME:MSK\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Paris\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Paris\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Prague\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Prague\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Riga\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Riga\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Rome\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Rome\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Samara\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Samara\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Saratov\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Saratov\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Simferopol\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Simferopol\r\nBEGIN:STANDARD\r\nTZNAME:MSK\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Sofia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Sofia\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Tallinn\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Tallinn\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Tirane\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Tirane\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Ulyanovsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Ulyanovsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Vienna\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Vienna\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Vilnius\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Vilnius\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Volgograd\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Volgograd\r\nBEGIN:STANDARD\r\nTZNAME:MSK\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Warsaw\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Warsaw\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Europe/Zurich\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Zurich\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Indian/Chagos\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Indian/Chagos\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Indian/Maldives\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Indian/Maldives\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Indian/Mauritius\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Indian/Mauritius\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Apia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Apia\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Auckland\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Auckland\r\nBEGIN:DAYLIGHT\r\nTZNAME:NZDT\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1300\r\nDTSTART:19700927T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:NZST\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1200\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Bougainville\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Bougainville\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Chatham\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Chatham\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:+1245\r\nTZOFFSETTO:+1345\r\nDTSTART:19700927T024500\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1345\r\nTZOFFSETTO:+1245\r\nDTSTART:19700405T034500\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Easter\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Easter\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19700404T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SA\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700905T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\r\nEND:DAYLIGHT");
|
||||||
|
register("TZID:Pacific/Efate\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Efate\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Fakaofo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Fakaofo\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Fiji\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Fiji\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Galapagos\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Galapagos\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Gambier\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Gambier\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Guadalcanal\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Guadalcanal\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Guam\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Guam\r\nBEGIN:STANDARD\r\nTZNAME:ChST\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Honolulu\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Honolulu\r\nBEGIN:STANDARD\r\nTZNAME:HST\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Kanton\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Kanton\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Kiritimati\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Kiritimati\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1400\r\nTZOFFSETTO:+1400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Kosrae\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Kosrae\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Kwajalein\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Kwajalein\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Marquesas\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Marquesas\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0930\r\nTZOFFSETTO:-0930\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Nauru\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Nauru\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Niue\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Niue\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Norfolk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Norfolk\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1200\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1100\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Noumea\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Noumea\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Pago_Pago\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Pago_Pago\r\nBEGIN:STANDARD\r\nTZNAME:SST\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Palau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Palau\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Pitcairn\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Pitcairn\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Port_Moresby\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Port_Moresby\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Rarotonga\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Rarotonga\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Tahiti\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Tahiti\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Tarawa\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Tarawa\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
register("TZID:Pacific/Tongatapu\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Tongatapu\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||||
|
})();
|
||||||
|
export default ICAL;
|
|
@ -0,0 +1,24 @@
|
||||||
|
import { createLogger, format, transports } from 'winston';
|
||||||
|
|
||||||
|
const { combine, timestamp, printf, colorize } = format;
|
||||||
|
|
||||||
|
// Define custom log format
|
||||||
|
const logFormat = printf(({ level, message, timestamp }) => {
|
||||||
|
return `[${timestamp}] ${level}: ${message}`;
|
||||||
|
});
|
||||||
|
|
||||||
|
//create logger
|
||||||
|
const logger = createLogger({
|
||||||
|
level: process.env.NODE_ENV === 'production' ? 'info' : 'debug',
|
||||||
|
format: combine(
|
||||||
|
timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
|
||||||
|
colorize(),
|
||||||
|
logFormat
|
||||||
|
),
|
||||||
|
transports: [
|
||||||
|
new transports.Console(),
|
||||||
|
new transports.File({ filename: 'logs/calmerge.log' })
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
export default logger;
|
|
@ -0,0 +1,85 @@
|
||||||
|
import express from 'express';
|
||||||
|
import path from 'path';
|
||||||
|
import fs from 'fs';
|
||||||
|
import { fetchCalendarData, sanitizeFilename, createCalendarComponent, addEventsToCalendar, saveCalendarFile, MERGED_CALENDARS_DIR } from './calendarUtil.js';
|
||||||
|
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
// Merge calendars endpoint
|
||||||
|
router.post('/merge', async (req, res) => {
|
||||||
|
const { linkGroupName, calendars } = req.body;
|
||||||
|
|
||||||
|
// Validate the input
|
||||||
|
if (!linkGroupName || !Array.isArray(calendars) || calendars.length === 0) {
|
||||||
|
return res.status(400).json({ error: 'Invalid input. Please provide a linkGroupName and at least one calendar.' });
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Sanitize the linkGroupName to create a valid filename
|
||||||
|
const sanitizedLinkGroupName = sanitizeFilename(linkGroupName);
|
||||||
|
const filename = `${sanitizedLinkGroupName}.ics`;
|
||||||
|
|
||||||
|
// Fetch calendar data
|
||||||
|
const results = await Promise.all(calendars.map(fetchCalendarData));
|
||||||
|
|
||||||
|
// Generate merged calendar using ical.js
|
||||||
|
const calendarComponent = createCalendarComponent(linkGroupName);
|
||||||
|
addEventsToCalendar(calendarComponent, results);
|
||||||
|
|
||||||
|
// Save the calendar to a file
|
||||||
|
saveCalendarFile(filename, calendarComponent.toString());
|
||||||
|
|
||||||
|
// Save the user input and sanitizedLinkGroupName in a separate JSON file
|
||||||
|
saveCalendarFile(`${sanitizedLinkGroupName}.json`, JSON.stringify({ linkGroupName, calendars }, null, 2));
|
||||||
|
|
||||||
|
res.json({ url: `${req.protocol}://${req.get('host')}/calendar/${sanitizedLinkGroupName}` });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error merging calendars:', error.message);
|
||||||
|
res.status(500).json({ error: 'Failed to merge calendars' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Refresh calendar if outdated
|
||||||
|
async function refreshCalendarData(calendarName) {
|
||||||
|
const jsonFilePath = path.join(MERGED_CALENDARS_DIR, `${calendarName}.json`);
|
||||||
|
console.log(`Refreshing calendar data for: ${calendarName}`);
|
||||||
|
|
||||||
|
// Read the JSON file to get the source URL and other details
|
||||||
|
const { calendars } = JSON.parse(fs.readFileSync(jsonFilePath, 'utf-8'));
|
||||||
|
|
||||||
|
const calendarResults = await Promise.all(calendars.map(fetchCalendarData));
|
||||||
|
const calendarComponent = createCalendarComponent(calendarName);
|
||||||
|
addEventsToCalendar(calendarComponent, calendarResults);
|
||||||
|
|
||||||
|
saveCalendarFile(`${calendarName}.ics`, calendarComponent.toString());
|
||||||
|
console.log('Calendar data refreshed and saved.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Serve the merged calendar file and refresh if older than an hour
|
||||||
|
router.get('/calendar/:name', async (req, res) => {
|
||||||
|
const calendarName = req.params.name;
|
||||||
|
const icsFilePath = path.join(MERGED_CALENDARS_DIR, `${calendarName}.ics`);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Check if the .ics file exists
|
||||||
|
console.log(`Serving calendar for: ${calendarName}`);
|
||||||
|
if (fs.existsSync(icsFilePath)) {
|
||||||
|
const stats = fs.statSync(icsFilePath);
|
||||||
|
const isOutdated = new Date() - new Date(stats.mtime) > 60 * 60 * 1000;
|
||||||
|
|
||||||
|
if (isOutdated){
|
||||||
|
console.log(`Calendar ${calendarName} is outdated. Refreshing...`);
|
||||||
|
await refreshCalendarData(calendarName);
|
||||||
|
}
|
||||||
|
res.setHeader('Content-Type', 'text/calendar');
|
||||||
|
res.sendFile(icsFilePath);
|
||||||
|
} else {
|
||||||
|
res.status(404).json({ error: 'Calendar not found.' });
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error retrieving calendar data:', error.message);
|
||||||
|
res.status(500).json({ error: 'Failed to retrieve calendar data.' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default router;
|
|
@ -0,0 +1,14 @@
|
||||||
|
import express from 'express';
|
||||||
|
import path from 'path';
|
||||||
|
import routes from './routes.js';
|
||||||
|
|
||||||
|
console.log(`Starting server in ${process.cwd()}`);
|
||||||
|
|
||||||
|
const app = express();
|
||||||
|
app.use(express.json());
|
||||||
|
|
||||||
|
// Serve static files from the 'public' directory
|
||||||
|
app.use(express.static(path.join(process.cwd(), 'public')));
|
||||||
|
app.use('/', routes);
|
||||||
|
|
||||||
|
export default app;
|
|
@ -0,0 +1,283 @@
|
||||||
|
import request from 'supertest';
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
|
||||||
|
// ESM equivalent of __dirname
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
|
||||||
|
const CALENDARS_DIR = path.join(__dirname, 'calendar');
|
||||||
|
const TEST_CALENDARS_DIR = path.join(__dirname, 'test_calendars');
|
||||||
|
const EXPECTED_OUTPUTS_DIR = path.join(__dirname, 'expected_outputs');
|
||||||
|
|
||||||
|
let server;
|
||||||
|
process.chdir(__dirname)
|
||||||
|
const app = await import('../src/server');
|
||||||
|
|
||||||
|
describe('Calendar Merging API', () => {
|
||||||
|
beforeAll(async () => {
|
||||||
|
// Start the server
|
||||||
|
server = app.default.listen(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(async () => {
|
||||||
|
// Ensure the server is closed before cleanup
|
||||||
|
await new Promise(resolve => server.close(resolve));
|
||||||
|
|
||||||
|
// Clean up the merged calendars directory after tests
|
||||||
|
fs.rmdirSync(CALENDARS_DIR, { recursive: true });
|
||||||
|
if (fs.existsSync(CALENDARS_DIR)) {
|
||||||
|
fs.rmdirSync(CALENDARS_DIR, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Optional: Add a delay to ensure all handles are released
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 100));
|
||||||
|
});
|
||||||
|
|
||||||
|
const getTestCalendarFilename = (filename) => {
|
||||||
|
return path.join(TEST_CALENDARS_DIR, filename);
|
||||||
|
};
|
||||||
|
|
||||||
|
const loadExpectedOutput = (filename) => {
|
||||||
|
return fs.readFileSync(path.join(EXPECTED_OUTPUTS_DIR, filename), 'utf8');
|
||||||
|
};
|
||||||
|
|
||||||
|
test('Preserve nextcloud calendar', async () => {
|
||||||
|
const input = getTestCalendarFilename('nextcloud-minimal.ics');
|
||||||
|
const response = await request(server)
|
||||||
|
.post('/merge')
|
||||||
|
.send({
|
||||||
|
linkGroupName: 'nextcloud-minimal',
|
||||||
|
calendars: [
|
||||||
|
{
|
||||||
|
url: input,
|
||||||
|
prefix: '',
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
// Check if the file was created in the test directory
|
||||||
|
const filePath = path.join(CALENDARS_DIR, 'nextcloud-minimal.ics');
|
||||||
|
console.log('Checking if file exists at:', filePath);
|
||||||
|
expect(fs.existsSync(filePath)).toBe(true);
|
||||||
|
|
||||||
|
// Load expected output
|
||||||
|
const expectedOutput = fs.readFileSync(input, 'utf8');
|
||||||
|
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||||
|
|
||||||
|
//compare
|
||||||
|
expect(actualOutput).toBe(expectedOutput);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Preserve google calendar', async () => {
|
||||||
|
const input = getTestCalendarFilename('google-calendar-minimal.ics');
|
||||||
|
const response = await request(server)
|
||||||
|
.post('/merge')
|
||||||
|
.send({
|
||||||
|
linkGroupName: 'google-calendar-minimal',
|
||||||
|
calendars: [
|
||||||
|
{
|
||||||
|
url: input,
|
||||||
|
prefix: '',
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
// Check if the file was created in the test directory
|
||||||
|
const filePath = path.join(CALENDARS_DIR, 'google-calendar-minimal.ics');
|
||||||
|
console.log('Checking if file exists at:', filePath);
|
||||||
|
expect(fs.existsSync(filePath)).toBe(true);
|
||||||
|
|
||||||
|
// Load expected output
|
||||||
|
const expectedOutput = fs.readFileSync(input, 'utf8');
|
||||||
|
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||||
|
|
||||||
|
//compare
|
||||||
|
expect(actualOutput).toBe(expectedOutput);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('Preserve date-based calendar', async () => {
|
||||||
|
const input = getTestCalendarFilename('US_Holidays.ics');
|
||||||
|
const response = await request(server)
|
||||||
|
.post('/merge')
|
||||||
|
.send({
|
||||||
|
linkGroupName: 'US Holidays',
|
||||||
|
calendars: [
|
||||||
|
{
|
||||||
|
url: input,
|
||||||
|
prefix: '',
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
// Check if the file was created in the test directory
|
||||||
|
const filePath = path.join(CALENDARS_DIR, 'US_Holidays.ics');
|
||||||
|
console.log('Checking if file exists at:', filePath);
|
||||||
|
expect(fs.existsSync(filePath)).toBe(true);
|
||||||
|
// Load expected output and compare
|
||||||
|
const expectedOutput = fs.readFileSync(input, 'utf8');
|
||||||
|
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||||
|
expect(actualOutput).toBe(expectedOutput);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Merge date-based calendar', async () => {
|
||||||
|
const response = await request(server)
|
||||||
|
.post('/merge')
|
||||||
|
.send({
|
||||||
|
linkGroupName: 'Date Based Calendar',
|
||||||
|
calendars: [
|
||||||
|
{
|
||||||
|
url: getTestCalendarFilename('holiday_calendar_2023.ics'),
|
||||||
|
prefix: 'holiday_calendar_2023',
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: getTestCalendarFilename('US_Holidays.ics'),
|
||||||
|
prefix: 'US_holidays',
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
expect(response.body.url).toMatch(new RegExp(`calendar/Date_Based_Calendar`));
|
||||||
|
|
||||||
|
// Check if the file was created in the test directory
|
||||||
|
const filePath = path.join(CALENDARS_DIR, 'Date_Based_Calendar.ics');
|
||||||
|
console.log('Checking if file exists at:', filePath);
|
||||||
|
expect(fs.existsSync(filePath)).toBe(true);
|
||||||
|
|
||||||
|
// Load expected output and compare
|
||||||
|
const expectedOutput = loadExpectedOutput('Date_Based_Calendar.ics');
|
||||||
|
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||||
|
expect(actualOutput).toBe(expectedOutput);
|
||||||
|
});
|
||||||
|
|
||||||
|
//test Merge time-based calendar
|
||||||
|
test('Merge time-based calendar', async () => {
|
||||||
|
const input = getTestCalendarFilename('work_task_calendar.ics');
|
||||||
|
const response = await request(server)
|
||||||
|
.post('/merge')
|
||||||
|
.send({
|
||||||
|
linkGroupName: 'Time Based Calendar',
|
||||||
|
calendars: [
|
||||||
|
{
|
||||||
|
url: getTestCalendarFilename('team_meeting_calendar.ics'), // Time-based calendar
|
||||||
|
prefix: 'team_meeting_calendar',
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: getTestCalendarFilename('work_task_calendar.ics'), // Time-based calendar
|
||||||
|
prefix: 'Work_Task',
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
expect(response.body.url).toMatch(/calendar\/Time_Based_Calendar/);
|
||||||
|
|
||||||
|
// Check if the file was created in the test directory
|
||||||
|
const filePath = path.join(CALENDARS_DIR, 'Time_Based_Calendar.ics');
|
||||||
|
expect(fs.existsSync(filePath)).toBe(true);
|
||||||
|
|
||||||
|
// Load expected output and compare
|
||||||
|
const expectedOutput = loadExpectedOutput('Time_Based_Calendar.ics');
|
||||||
|
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||||
|
expect(actualOutput).toBe(expectedOutput);
|
||||||
|
});
|
||||||
|
|
||||||
|
//test Merge calendar without prefix
|
||||||
|
test('Merge calendar without prefix', async () => {
|
||||||
|
const response = await request(server)
|
||||||
|
.post('/merge')
|
||||||
|
.send({
|
||||||
|
linkGroupName: 'No Prefix Calendar',
|
||||||
|
calendars: [
|
||||||
|
{
|
||||||
|
url: getTestCalendarFilename('sf_public_holidays.ics'),
|
||||||
|
prefix: '',
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
expect(response.body.url).toMatch(/calendar\/No_Prefix_Calendar/);
|
||||||
|
|
||||||
|
// Check if the file was created in the test directory
|
||||||
|
const filePath = path.join(CALENDARS_DIR, 'No_Prefix_Calendar.ics');
|
||||||
|
expect(fs.existsSync(filePath)).toBe(true);
|
||||||
|
|
||||||
|
// Load expected output and compare
|
||||||
|
const expectedOutput = loadExpectedOutput('No_Prefix_Calendar.ics');
|
||||||
|
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||||
|
expect(actualOutput).toBe(expectedOutput);
|
||||||
|
});
|
||||||
|
|
||||||
|
//test Merge calendar with override
|
||||||
|
test('Merge calendar with override', async () => {
|
||||||
|
const response = await request(server)
|
||||||
|
.post('/merge')
|
||||||
|
.send({
|
||||||
|
linkGroupName: 'Override Calendar',
|
||||||
|
calendars: [
|
||||||
|
{
|
||||||
|
url: getTestCalendarFilename('sf_public_holidays.ics'),
|
||||||
|
prefix: 'Override Event',
|
||||||
|
override: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
expect(response.body.url).toMatch(/calendar\/Override_Calendar/);
|
||||||
|
|
||||||
|
// Check if the file was created in the test directory
|
||||||
|
const filePath = path.join(CALENDARS_DIR, 'Override_Calendar.ics');
|
||||||
|
expect(fs.existsSync(filePath)).toBe(true);
|
||||||
|
|
||||||
|
// Load expected output and compare
|
||||||
|
const expectedOutput = loadExpectedOutput('Override_Calendar.ics');
|
||||||
|
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||||
|
expect(actualOutput).toBe(expectedOutput);
|
||||||
|
});
|
||||||
|
|
||||||
|
//test Merge date-based and time-based calendars
|
||||||
|
test('Merge date-based and time-based calendars', async () => {
|
||||||
|
const response = await request(server)
|
||||||
|
.post('/merge')
|
||||||
|
.send({
|
||||||
|
linkGroupName: 'Merged Date and Time Based Calendar',
|
||||||
|
calendars: [
|
||||||
|
{
|
||||||
|
url: getTestCalendarFilename('holiday_calendar_2023.ics'), // Date-based calendar
|
||||||
|
prefix: 'Holiday_2023',
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: getTestCalendarFilename('work_task_calendar.ics'), // Time-based calendar
|
||||||
|
prefix: 'Work_Task',
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
expect(response.body.url).toMatch(new RegExp('calendar/Merged_Date_and_Time_Based_Calendar'));
|
||||||
|
|
||||||
|
// Check if the file was created in the test directory
|
||||||
|
const filePath = path.join(CALENDARS_DIR, 'Merged_Date_and_Time_Based_Calendar.ics');
|
||||||
|
expect(fs.existsSync(filePath)).toBe(true);
|
||||||
|
|
||||||
|
// Load expected output and compare
|
||||||
|
const expectedOutput = loadExpectedOutput('Merged_Date_and_Time_Based_Calendar.ics');
|
||||||
|
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||||
|
expect(actualOutput).toBe(expectedOutput);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,56 @@
|
||||||
|
import ICAL from '../src/lib/ical.timezones';
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
import axios from 'axios';
|
||||||
|
import { jest } from '@jest/globals';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
|
||||||
|
// ESM equivalent of __dirname
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
|
||||||
|
// Describe the test suite for Calendar Utility Functions
|
||||||
|
describe('Calendar Utility Functions', () => {
|
||||||
|
// Declare variable to hold the functions we will be testing
|
||||||
|
let fetchCalendarData;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
const calendarUtilModule = await import('../src/calendarUtil.js');
|
||||||
|
fetchCalendarData = calendarUtilModule.fetchCalendarData;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Describe a nested test suite for the 'fetchCalendarData' function
|
||||||
|
describe('fetchCalendarData', () => {
|
||||||
|
|
||||||
|
// Test case: fetching data from a URL
|
||||||
|
it('fetches data from a URL', async () => {
|
||||||
|
const testCalendar = { url: 'https://calendar.google.com/calendar/ical/b4c66eb4bb2cc15257d071bab3f935385778b042112ea1aaedada47f3f1a6e3a%40group.calendar.google.com/public/basic.ics' };
|
||||||
|
|
||||||
|
// Mock the axios.get method to resolve with specific test data
|
||||||
|
jest.spyOn(axios, 'get').mockResolvedValue({ data: 'test data' });
|
||||||
|
|
||||||
|
// Call the fetchCalendarData function with the test calendar object
|
||||||
|
const result = await fetchCalendarData(testCalendar);
|
||||||
|
|
||||||
|
// Assert that the fetched result's data matches the expected test data
|
||||||
|
expect(result.data).toBe('test data');
|
||||||
|
|
||||||
|
// Restore the original axios.get method after the test
|
||||||
|
axios.get.mockRestore();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Test case: reading data from a file
|
||||||
|
it('reads and parses data from a file', async () => {
|
||||||
|
const testCalendar = { url: path.join(__dirname, 'test_calendars', 'nextcloud.ics'), };
|
||||||
|
|
||||||
|
// Call the fetchCalendarData function
|
||||||
|
const result = await fetchCalendarData(testCalendar);
|
||||||
|
const parsed = ICAL.parse(result.data);
|
||||||
|
const component = new ICAL.Component(parsed);
|
||||||
|
const firstEvent = new ICAL.Event(component.getAllSubcomponents('vevent')[0]);
|
||||||
|
// Assert that the fetched and parsed data matches
|
||||||
|
expect(firstEvent.startDate.toJSON()).toEqual({"day": 20, "hour": 21, "isDate": false, "minute": 15, "month": 11, "second": 0, "timezone": "Europe/Berlin", "year": 2024});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,21 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
NAME:Date Based Calendar
|
||||||
|
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231225T000000-001@example.com
|
||||||
|
DTSTART;VALUE=DATE:20231225
|
||||||
|
DTEND;VALUE=DATE:20231226
|
||||||
|
DTSTAMP:20231225T000000Z
|
||||||
|
SUMMARY:holiday_calendar_2023 Christmas Day
|
||||||
|
LOCATION:Germany
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231225T000000-001@example.com
|
||||||
|
DTSTART;VALUE=DATE:20231225
|
||||||
|
DTEND;VALUE=DATE:20231226
|
||||||
|
DTSTAMP:20231225T000000Z
|
||||||
|
SUMMARY:US_holidays Christmas Day
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"linkGroupName": "Date Based Calendar",
|
||||||
|
"calendars": [
|
||||||
|
{
|
||||||
|
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\holiday_calendar_2023.ics",
|
||||||
|
"prefix": "holiday_calendar_2023",
|
||||||
|
"override": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\US_Holidays.ics",
|
||||||
|
"prefix": "US_holidays",
|
||||||
|
"override": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
NAME:Merged Date and Time Based Calendar
|
||||||
|
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231225T000000-001@example.com
|
||||||
|
DTSTART;VALUE=DATE:20231225
|
||||||
|
DTEND;VALUE=DATE:20231226
|
||||||
|
DTSTAMP:20231225T000000Z
|
||||||
|
SUMMARY:Holiday_2023 Christmas Day
|
||||||
|
LOCATION:Germany
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231108T090000-001@example.com
|
||||||
|
DTSTART:20231108T090000Z
|
||||||
|
DTEND:20231108T100000Z
|
||||||
|
DTSTAMP:20231108T090000Z
|
||||||
|
SUMMARY:Work_Task Work Task
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"linkGroupName": "Merged Date and Time Based Calendar",
|
||||||
|
"calendars": [
|
||||||
|
{
|
||||||
|
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\holiday_calendar_2023.ics",
|
||||||
|
"prefix": "Holiday_2023",
|
||||||
|
"override": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\work_task_calendar.ics",
|
||||||
|
"prefix": "Work_Task",
|
||||||
|
"override": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
NAME:No Prefix Calendar
|
||||||
|
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231225T000000-001@example.com
|
||||||
|
DTSTART;VALUE=DATE:20231225
|
||||||
|
DTEND;VALUE=DATE:20231226
|
||||||
|
DTSTAMP:20231225T000000Z
|
||||||
|
SUMMARY:Christmas Day
|
||||||
|
LOCATION:San Francisco
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"linkGroupName": "No Prefix Calendar",
|
||||||
|
"calendars": [
|
||||||
|
{
|
||||||
|
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\sf_public_holidays.ics",
|
||||||
|
"prefix": "",
|
||||||
|
"override": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
NAME:Override Calendar
|
||||||
|
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231225T000000-001@example.com
|
||||||
|
DTSTART;VALUE=DATE:20231225
|
||||||
|
DTEND;VALUE=DATE:20231226
|
||||||
|
DTSTAMP:20231225T000000Z
|
||||||
|
SUMMARY:Override Event
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"linkGroupName": "Override Calendar",
|
||||||
|
"calendars": [
|
||||||
|
{
|
||||||
|
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\sf_public_holidays.ics",
|
||||||
|
"prefix": "Override Event",
|
||||||
|
"override": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
NAME:Time Based Calendar
|
||||||
|
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231109T110000-001@example.com
|
||||||
|
DTSTART:20231109T110000Z
|
||||||
|
DTEND:20231109T120000Z
|
||||||
|
DTSTAMP:20231109T110000Z
|
||||||
|
SUMMARY:team_meeting_calendar Team Meeting
|
||||||
|
LOCATION:Virtual
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231108T090000-001@example.com
|
||||||
|
DTSTART:20231108T090000Z
|
||||||
|
DTEND:20231108T100000Z
|
||||||
|
DTSTAMP:20231108T090000Z
|
||||||
|
SUMMARY:Work_Task Work Task
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"linkGroupName": "Time Based Calendar",
|
||||||
|
"calendars": [
|
||||||
|
{
|
||||||
|
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\team_meeting_calendar.ics",
|
||||||
|
"prefix": "team_meeting_calendar",
|
||||||
|
"override": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\work_task_calendar.ics",
|
||||||
|
"prefix": "work_task",
|
||||||
|
"override": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
NAME:US Holidays
|
||||||
|
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231225T000000-001@example.com
|
||||||
|
DTSTART;VALUE=DATE:20231225
|
||||||
|
DTEND;VALUE=DATE:20231226
|
||||||
|
DTSTAMP:20231225T000000Z
|
||||||
|
SUMMARY:Christmas Day
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
NAME:google-calendar-minimal
|
||||||
|
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
METHOD:PUBLISH
|
||||||
|
X-WR-TIMEZONE:Africa/Nairobi
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:6tbrvsitniuu72li7kk15gou2b@google.com
|
||||||
|
DTSTART:20241003T190000Z
|
||||||
|
DTEND:20241003T200000Z
|
||||||
|
DTSTAMP:20241119T115316Z
|
||||||
|
SUMMARY:progodessey
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -8,7 +8,7 @@ X-WR-TIMEZONE:Africa/Nairobi
|
||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
DTSTART:20240930T113000Z
|
DTSTART:20240930T113000Z
|
||||||
DTEND:20240930T123000Z
|
DTEND:20240930T123000Z
|
||||||
DTSTAMP:20241104T102505Z
|
DTSTAMP:20241119T115316Z
|
||||||
UID:0d0p2hp0l26ebuk2r0kb1q9kuo@google.com
|
UID:0d0p2hp0l26ebuk2r0kb1q9kuo@google.com
|
||||||
CREATED:20240930T111532Z
|
CREATED:20240930T111532Z
|
||||||
LAST-MODIFIED:20240930T111532Z
|
LAST-MODIFIED:20240930T111532Z
|
||||||
|
@ -20,7 +20,7 @@ END:VEVENT
|
||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
DTSTART:20241003T190000Z
|
DTSTART:20241003T190000Z
|
||||||
DTEND:20241003T200000Z
|
DTEND:20241003T200000Z
|
||||||
DTSTAMP:20241104T102505Z
|
DTSTAMP:20241119T115316Z
|
||||||
UID:6tbrvsitniuu72li7kk15gou2b@google.com
|
UID:6tbrvsitniuu72li7kk15gou2b@google.com
|
||||||
CREATED:20241001T194455Z
|
CREATED:20241001T194455Z
|
||||||
LAST-MODIFIED:20241001T194455Z
|
LAST-MODIFIED:20241001T194455Z
|
||||||
|
@ -30,10 +30,10 @@ SUMMARY:progodessey
|
||||||
TRANSP:OPAQUE
|
TRANSP:OPAQUE
|
||||||
END:VEVENT
|
END:VEVENT
|
||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
|
UID:7l7n9nltrudluv65gfgll2q930@google.com
|
||||||
DTSTART:20241009T173000Z
|
DTSTART:20241009T173000Z
|
||||||
DTEND:20241009T183000Z
|
DTEND:20241009T183000Z
|
||||||
DTSTAMP:20241104T102505Z
|
DTSTAMP:20241119T115316Z
|
||||||
UID:7l7n9nltrudluv65gfgll2q930@google.com
|
|
||||||
CREATED:20241010T123337Z
|
CREATED:20241010T123337Z
|
||||||
LAST-MODIFIED:20241010T123337Z
|
LAST-MODIFIED:20241010T123337Z
|
||||||
SEQUENCE:0
|
SEQUENCE:0
|
||||||
|
@ -41,4 +41,4 @@ STATUS:CONFIRMED
|
||||||
SUMMARY:do
|
SUMMARY:do
|
||||||
TRANSP:OPAQUE
|
TRANSP:OPAQUE
|
||||||
END:VEVENT
|
END:VEVENT
|
||||||
END:VCALENDAR
|
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Example Corp//NONSGML Event//EN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231225T000000-001@example.com
|
||||||
|
DTSTAMP:20231225T000000Z
|
||||||
|
DTSTART;VALUE=DATE:20231225
|
||||||
|
DTEND;VALUE=DATE:20231226
|
||||||
|
SUMMARY:Christmas Day
|
||||||
|
DESCRIPTION:Public holiday for Christmas.
|
||||||
|
LOCATION:Germany
|
||||||
|
STATUS:CONFIRMED
|
||||||
|
SEQUENCE:0
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,32 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
NAME:nextcloud-minimal
|
||||||
|
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Europe/Berlin
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+0100
|
||||||
|
TZOFFSETTO:+0200
|
||||||
|
TZNAME:CEST
|
||||||
|
DTSTART:19700329T020000
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+0200
|
||||||
|
TZOFFSETTO:+0100
|
||||||
|
TZNAME:CET
|
||||||
|
DTSTART:19701025T030000
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:5f4ad965-16a8-48eb-8233-78bf93a8b35e
|
||||||
|
DTSTART;TZID=Europe/Berlin:20241120T211500
|
||||||
|
DTEND;TZID=Europe/Berlin:20241120T215000
|
||||||
|
DTSTAMP:20241113T212909Z
|
||||||
|
SUMMARY:JR Weekly Check-In
|
||||||
|
LOCATION:FaceTime
|
||||||
|
RRULE:FREQ=WEEKLY;BYDAY=WE
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,131 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
PRODID:-//SabreDAV//SabreDAV//EN
|
||||||
|
X-WR-CALNAME:Progodyssey Ryan (stackspin-a51baefe-70df-4cce-9be1-048354b619
|
||||||
|
b8)
|
||||||
|
X-APPLE-CALENDAR-COLOR:#ddcb55
|
||||||
|
REFRESH-INTERVAL;VALUE=DURATION:PT4H
|
||||||
|
X-PUBLISHED-TTL:PT4H
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Europe/Berlin
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+0100
|
||||||
|
TZOFFSETTO:+0200
|
||||||
|
TZNAME:CEST
|
||||||
|
DTSTART:19700329T020000
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+0200
|
||||||
|
TZOFFSETTO:+0100
|
||||||
|
TZNAME:CET
|
||||||
|
DTSTART:19701025T030000
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20241113T212909Z
|
||||||
|
DTEND;TZID=Europe/Berlin:20241120T215000
|
||||||
|
DTSTAMP:20241113T212909Z
|
||||||
|
DTSTART;TZID=Europe/Berlin:20241120T211500
|
||||||
|
LAST-MODIFIED:20241113T212909Z
|
||||||
|
LOCATION:FaceTime
|
||||||
|
RRULE:FREQ=WEEKLY;BYDAY=WE
|
||||||
|
SEQUENCE:0
|
||||||
|
STATUS:CONFIRMED
|
||||||
|
SUMMARY:JR Weekly Check-In
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
UID:5f4ad965-16a8-48eb-8233-78bf93a8b35e
|
||||||
|
RELATED-TO;RELTYPE=SIBLING:17cf7d22-9bee-4a8e-9023-878b1a1b73a0
|
||||||
|
BEGIN:VALARM
|
||||||
|
ACKNOWLEDGED:20241113T202052Z
|
||||||
|
ACTION:DISPLAY
|
||||||
|
DESCRIPTION:This is an event reminder.
|
||||||
|
TRIGGER:-PT20M
|
||||||
|
UID:99250427-AB45-4111-A999-DB417FC290D1
|
||||||
|
X-WR-ALARMUID:99250427-AB45-4111-A999-DB417FC290D1
|
||||||
|
SUMMARY:JR Weekly Check-In
|
||||||
|
END:VALARM
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20241113T213036Z
|
||||||
|
DTEND;TZID=Europe/Berlin:20241204T212500
|
||||||
|
DTSTAMP:20241113T213036Z
|
||||||
|
DTSTART;TZID=Europe/Berlin:20241204T203000
|
||||||
|
LAST-MODIFIED:20241113T213036Z
|
||||||
|
LOCATION:FaceTime
|
||||||
|
SEQUENCE:1
|
||||||
|
STATUS:CONFIRMED
|
||||||
|
SUMMARY:JR Weekly Check-In
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
UID:5f4ad965-16a8-48eb-8233-78bf93a8b35e
|
||||||
|
RELATED-TO;RELTYPE=SIBLING:17cf7d22-9bee-4a8e-9023-878b1a1b73a0
|
||||||
|
RECURRENCE-ID;TZID=Europe/Berlin:20241204T211500
|
||||||
|
BEGIN:VALARM
|
||||||
|
ACKNOWLEDGED:20241113T202052Z
|
||||||
|
ACTION:DISPLAY
|
||||||
|
DESCRIPTION:This is an event reminder.
|
||||||
|
TRIGGER:-PT20M
|
||||||
|
UID:99250427-AB45-4111-A999-DB417FC290D1
|
||||||
|
X-WR-ALARMUID:99250427-AB45-4111-A999-DB417FC290D1
|
||||||
|
SUMMARY:JR Weekly Check-In
|
||||||
|
END:VALARM
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20241107T101403Z
|
||||||
|
DTEND;TZID=Europe/Berlin:20241111T134500
|
||||||
|
DTSTAMP:20241118T103806Z
|
||||||
|
DTSTART;TZID=Europe/Berlin:20241111T121500
|
||||||
|
LAST-MODIFIED:20241118T103803Z
|
||||||
|
LOCATION:https://call.element.io/room/#/progodyssey?password=bU95nPdV2u-BGJ
|
||||||
|
4zw9cPGw&roomId=%21QsGQUxdyuMfGKhGvNH%3Acall.ems.host
|
||||||
|
RRULE:FREQ=WEEKLY;BYDAY=MO
|
||||||
|
SEQUENCE:4
|
||||||
|
STATUS:CONFIRMED
|
||||||
|
SUMMARY:JR Coprogramming Session
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
UID:8c251542-6cbf-4396-b83d-490be79c97a9
|
||||||
|
BEGIN:VALARM
|
||||||
|
ACKNOWLEDGED:20241118T103803Z
|
||||||
|
ACTION:DISPLAY
|
||||||
|
DESCRIPTION:This is an event reminder.
|
||||||
|
SUMMARY:Coprogramming Session
|
||||||
|
TRIGGER:-PT1H
|
||||||
|
UID:55C3B462-E182-4A2B-A500-3F249FC860C2
|
||||||
|
X-WR-ALARMUID:55C3B462-E182-4A2B-A500-3F249FC860C2
|
||||||
|
END:VALARM
|
||||||
|
BEGIN:VALARM
|
||||||
|
ACTION:DISPLAY
|
||||||
|
DESCRIPTION:Reminder
|
||||||
|
TRIGGER:-PT1H
|
||||||
|
UID:9AABB2AB-A755-4723-87CF-10B119670E7F
|
||||||
|
X-APPLE-DEFAULT-ALARM:TRUE
|
||||||
|
X-WR-ALARMUID:9AABB2AB-A755-4723-87CF-10B119670E7F
|
||||||
|
END:VALARM
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20241107T101605Z
|
||||||
|
DTEND;TZID=Europe/Berlin:20241113T215500
|
||||||
|
DTSTAMP:20241113T212909Z
|
||||||
|
DTSTART;TZID=Europe/Berlin:20241113T213000
|
||||||
|
LAST-MODIFIED:20241113T212909Z
|
||||||
|
LOCATION:FaceTime
|
||||||
|
RRULE:FREQ=WEEKLY;BYDAY=WE;UNTIL=20241120T202959Z
|
||||||
|
SEQUENCE:4
|
||||||
|
STATUS:CONFIRMED
|
||||||
|
SUMMARY:JR Weekly Check-In
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
UID:17cf7d22-9bee-4a8e-9023-878b1a1b73a0
|
||||||
|
RELATED-TO;RELTYPE=SIBLING:5f4ad965-16a8-48eb-8233-78bf93a8b35e
|
||||||
|
BEGIN:VALARM
|
||||||
|
ACKNOWLEDGED:20241113T202052Z
|
||||||
|
ACTION:DISPLAY
|
||||||
|
DESCRIPTION:This is an event reminder.
|
||||||
|
SUMMARY:JR Weekly Check-In
|
||||||
|
TRIGGER:-PT20M
|
||||||
|
UID:99250427-AB45-4111-A999-DB417FC290D1
|
||||||
|
X-WR-ALARMUID:99250427-AB45-4111-A999-DB417FC290D1
|
||||||
|
END:VALARM
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Example Corp//NONSGML Event//EN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231225T000000-001@example.com
|
||||||
|
DTSTAMP:20231225T000000Z
|
||||||
|
DTSTART;VALUE=DATE:20231225
|
||||||
|
DTEND;VALUE=DATE:20231226
|
||||||
|
SUMMARY:Christmas Day
|
||||||
|
DESCRIPTION:Public holiday for Christmas in San Francisco.
|
||||||
|
LOCATION:San Francisco
|
||||||
|
STATUS:CONFIRMED
|
||||||
|
SEQUENCE:0
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
PRODID:-//Example Corp//NONSGML Event//EN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231109T110000-001@example.com
|
||||||
|
DTSTAMP:20231109T110000Z
|
||||||
|
DTSTART:20231109T110000Z
|
||||||
|
DTEND:20231109T120000Z
|
||||||
|
SUMMARY:Team Meeting
|
||||||
|
DESCRIPTION:Team meeting for project planning.
|
||||||
|
LOCATION:Virtual
|
||||||
|
STATUS:CONFIRMED
|
||||||
|
SEQUENCE:0
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -0,0 +1,11 @@
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
NAME:Time Based Calendar
|
||||||
|
VERSION:2.0
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20231108T090000-001@example.com
|
||||||
|
DTSTAMP:20231108T090000Z
|
||||||
|
DTSTART:20231108T090000Z
|
||||||
|
DTEND:20231108T100000Z
|
||||||
|
SUMMARY:Work Task
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
|
@ -1,336 +0,0 @@
|
||||||
BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//sebbo.net//ical-generator//EN
|
|
||||||
NAME:Date Based Calendar
|
|
||||||
X-WR-CALNAME:Date Based Calendar
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:l93d@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20230219
|
|
||||||
DTEND;VALUE=DATE:20230224
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Ferien_Bayern_2023 Winterferien 2023 Bayern
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:bxei@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20230402
|
|
||||||
DTEND;VALUE=DATE:20230415
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Ferien_Bayern_2023 Osterferien 2023 Bayern
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:csr1@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20230529
|
|
||||||
DTEND;VALUE=DATE:20230609
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Ferien_Bayern_2023 Pfingstferien 2023 Bayern
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:gamv@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20230730
|
|
||||||
DTEND;VALUE=DATE:20230911
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Ferien_Bayern_2023 Sommerferien 2023 Bayern
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:xuty@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20231029
|
|
||||||
DTEND;VALUE=DATE:20231103
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Ferien_Bayern_2023 Herbstferien 2023 Bayern
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:l9k9@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20231121
|
|
||||||
DTEND;VALUE=DATE:20231122
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Ferien_Bayern_2023 Herbstferien 2023 Bayern
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:om17@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20231222
|
|
||||||
DTEND;VALUE=DATE:20240105
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Ferien_Bayern_2023 Weihnachtsferien 2023 Bayern
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:1i1v@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20231231
|
|
||||||
DTEND;VALUE=DATE:20231231
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays New Year's Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:qga1@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20240114
|
|
||||||
DTEND;VALUE=DATE:20240114
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays M L King Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:axvt@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20240218
|
|
||||||
DTEND;VALUE=DATE:20240218
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Presidents' Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:3t87@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20240328
|
|
||||||
DTEND;VALUE=DATE:20240328
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Good Friday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:olsu@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20240330
|
|
||||||
DTEND;VALUE=DATE:20240330
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Easter Sunday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:xts1@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20240526
|
|
||||||
DTEND;VALUE=DATE:20240526
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Memorial Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:0e36@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20240618
|
|
||||||
DTEND;VALUE=DATE:20240618
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Juneteenth
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:rc80@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20240703
|
|
||||||
DTEND;VALUE=DATE:20240703
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Independence Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:386s@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20240901
|
|
||||||
DTEND;VALUE=DATE:20240901
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Labor Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:102z@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20241013
|
|
||||||
DTEND;VALUE=DATE:20241013
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Columbus Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:qqbg@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20241110
|
|
||||||
DTEND;VALUE=DATE:20241110
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Veterans Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:dyh3@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20241127
|
|
||||||
DTEND;VALUE=DATE:20241127
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Thanksgiving Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:oqsd@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20241224
|
|
||||||
DTEND;VALUE=DATE:20241224
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Christmas
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:8140@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20241231
|
|
||||||
DTEND;VALUE=DATE:20241231
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays New Year's Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:fmmb@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20250119
|
|
||||||
DTEND;VALUE=DATE:20250119
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays M L King Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:l4x1@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20250216
|
|
||||||
DTEND;VALUE=DATE:20250216
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Presidents' Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:fpt7@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20250417
|
|
||||||
DTEND;VALUE=DATE:20250417
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Good Friday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:x3y4@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20250419
|
|
||||||
DTEND;VALUE=DATE:20250419
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Easter Sunday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:fhn8@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20250525
|
|
||||||
DTEND;VALUE=DATE:20250525
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Memorial Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:wue7@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20250618
|
|
||||||
DTEND;VALUE=DATE:20250618
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Juneteenth
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:oq6h@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20250703
|
|
||||||
DTEND;VALUE=DATE:20250703
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Independence Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:4gm3@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20250831
|
|
||||||
DTEND;VALUE=DATE:20250831
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Labor Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:8he3@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20251012
|
|
||||||
DTEND;VALUE=DATE:20251012
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Columbus Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:3u40@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20251110
|
|
||||||
DTEND;VALUE=DATE:20251110
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Veterans Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:s651@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20251126
|
|
||||||
DTEND;VALUE=DATE:20251126
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Thanksgiving Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:yzoz@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART;VALUE=DATE:20251224
|
|
||||||
DTEND;VALUE=DATE:20251224
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:US_holidays Christmas
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
|
@ -1,16 +0,0 @@
|
||||||
{
|
|
||||||
"id": "Date_Based_Calendar",
|
|
||||||
"linkGroupName": "Date Based Calendar",
|
|
||||||
"calendars": [
|
|
||||||
{
|
|
||||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\ferien_bayern_2023.ics",
|
|
||||||
"prefix": "Ferien_Bayern_2023",
|
|
||||||
"override": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\US_Holidays.ics",
|
|
||||||
"prefix": "US_holidays",
|
|
||||||
"override": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,266 +0,0 @@
|
||||||
BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//sebbo.net//ical-generator//EN
|
|
||||||
NAME:No Prefix Calendar
|
|
||||||
X-WR-CALNAME:No Prefix Calendar
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:jfle@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20231231
|
|
||||||
DTEND;VALUE=DATE:20231231
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: New Year's Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:s4ov@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240101
|
|
||||||
DTEND;VALUE=DATE:20240101
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: New Year's Day Holiday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:ov14@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240102
|
|
||||||
DTEND;VALUE=DATE:20240102
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: New Year's Day Holiday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:qdqh@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240103
|
|
||||||
DTEND;VALUE=DATE:20240103
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: New Year's Day Holiday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:i05i@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240104
|
|
||||||
DTEND;VALUE=DATE:20240104
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: New Year's Day Holiday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:k6ih@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240106
|
|
||||||
DTEND;VALUE=DATE:20240106
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Orthodox Christmas
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:32bn@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240107
|
|
||||||
DTEND;VALUE=DATE:20240107
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Orthodox Christmas Holiday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:k1o7@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240222
|
|
||||||
DTEND;VALUE=DATE:20240222
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Defender of the Fatherland
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:4l5n@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240307
|
|
||||||
DTEND;VALUE=DATE:20240307
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Intl. Women's Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:ymwf@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240430
|
|
||||||
DTEND;VALUE=DATE:20240430
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Spring and Labor Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:t4fd@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240508
|
|
||||||
DTEND;VALUE=DATE:20240508
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Victory Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:foxu@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240611
|
|
||||||
DTEND;VALUE=DATE:20240611
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Russia Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:ne1r@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20241103
|
|
||||||
DTEND;VALUE=DATE:20241103
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Civil Unity Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:jzcn@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20241231
|
|
||||||
DTEND;VALUE=DATE:20241231
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: New Year's Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:dfzn@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250101
|
|
||||||
DTEND;VALUE=DATE:20250101
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: New Year's Day Holiday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:v9mu@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250102
|
|
||||||
DTEND;VALUE=DATE:20250102
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: New Year's Day Holiday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:x79k@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250103
|
|
||||||
DTEND;VALUE=DATE:20250103
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: New Year's Day Holiday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:gj06@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250104
|
|
||||||
DTEND;VALUE=DATE:20250104
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: New Year's Day Holiday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:s75j@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250106
|
|
||||||
DTEND;VALUE=DATE:20250106
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Orthodox Christmas
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:u16z@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250107
|
|
||||||
DTEND;VALUE=DATE:20250107
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Orthodox Christmas Holiday
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:c1co@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250223
|
|
||||||
DTEND;VALUE=DATE:20250223
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Defender of the Fatherland
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:s1ga@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250309
|
|
||||||
DTEND;VALUE=DATE:20250309
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Intl. Women's Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:7050@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250430
|
|
||||||
DTEND;VALUE=DATE:20250430
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Spring and Labor Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:stsk@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250508
|
|
||||||
DTEND;VALUE=DATE:20250508
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Victory Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:n4iy@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250611
|
|
||||||
DTEND;VALUE=DATE:20250611
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Russia Day
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:7dco@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20251103
|
|
||||||
DTEND;VALUE=DATE:20251103
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY: Civil Unity Day
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"id": "No_Prefix_Calendar",
|
|
||||||
"linkGroupName": "No Prefix Calendar",
|
|
||||||
"calendars": [
|
|
||||||
{
|
|
||||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\San_Francisco_Public_Holidays.ics",
|
|
||||||
"prefix": "",
|
|
||||||
"override": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,266 +0,0 @@
|
||||||
BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//sebbo.net//ical-generator//EN
|
|
||||||
NAME:Override Calendar
|
|
||||||
X-WR-CALNAME:Override Calendar
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:cknb@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20231231
|
|
||||||
DTEND;VALUE=DATE:20231231
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:p03j@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240101
|
|
||||||
DTEND;VALUE=DATE:20240101
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:s2a8@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240102
|
|
||||||
DTEND;VALUE=DATE:20240102
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:ptdn@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240103
|
|
||||||
DTEND;VALUE=DATE:20240103
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:d7oa@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240104
|
|
||||||
DTEND;VALUE=DATE:20240104
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:wuts@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240106
|
|
||||||
DTEND;VALUE=DATE:20240106
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:g3b0@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240107
|
|
||||||
DTEND;VALUE=DATE:20240107
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:qbx4@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240222
|
|
||||||
DTEND;VALUE=DATE:20240222
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:v25w@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240307
|
|
||||||
DTEND;VALUE=DATE:20240307
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:7u8c@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240430
|
|
||||||
DTEND;VALUE=DATE:20240430
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:apf4@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240508
|
|
||||||
DTEND;VALUE=DATE:20240508
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:jfpb@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20240611
|
|
||||||
DTEND;VALUE=DATE:20240611
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:2ykv@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20241103
|
|
||||||
DTEND;VALUE=DATE:20241103
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:0b26@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20241231
|
|
||||||
DTEND;VALUE=DATE:20241231
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:qs49@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250101
|
|
||||||
DTEND;VALUE=DATE:20250101
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:559o@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250102
|
|
||||||
DTEND;VALUE=DATE:20250102
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:8giv@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250103
|
|
||||||
DTEND;VALUE=DATE:20250103
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:e57i@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250104
|
|
||||||
DTEND;VALUE=DATE:20250104
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:ur8w@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250106
|
|
||||||
DTEND;VALUE=DATE:20250106
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:08hg@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250107
|
|
||||||
DTEND;VALUE=DATE:20250107
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:gvgf@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250223
|
|
||||||
DTEND;VALUE=DATE:20250223
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:rllx@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250309
|
|
||||||
DTEND;VALUE=DATE:20250309
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:sy19@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250430
|
|
||||||
DTEND;VALUE=DATE:20250430
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:um2w@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250508
|
|
||||||
DTEND;VALUE=DATE:20250508
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:fdjj@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20250611
|
|
||||||
DTEND;VALUE=DATE:20250611
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:fsik@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122935Z
|
|
||||||
DTSTART;VALUE=DATE:20251103
|
|
||||||
DTEND;VALUE=DATE:20251103
|
|
||||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
|
||||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
|
||||||
SUMMARY:Override Event
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"id": "Override_Calendar",
|
|
||||||
"linkGroupName": "Override Calendar",
|
|
||||||
"calendars": [
|
|
||||||
{
|
|
||||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\San_Francisco_Public_Holidays.ics",
|
|
||||||
"prefix": "Override Event",
|
|
||||||
"override": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//sebbo.net//ical-generator//EN
|
|
||||||
NAME:Time Based Calendar
|
|
||||||
X-WR-CALNAME:Time Based Calendar
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:upko@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART:20241001T183000Z
|
|
||||||
DTEND:20241001T193000Z
|
|
||||||
SUMMARY:other_work calmerge
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:myd3@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART:20241010T173000Z
|
|
||||||
DTEND:20241010T183000Z
|
|
||||||
SUMMARY:other_work to do
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:zs1z@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART:20240930T113000Z
|
|
||||||
DTEND:20240930T123000Z
|
|
||||||
SUMMARY:work other work
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:d6rq@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART:20241003T190000Z
|
|
||||||
DTEND:20241003T200000Z
|
|
||||||
SUMMARY:work progodessey
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
UID:6c65@Ryan-jr
|
|
||||||
SEQUENCE:0
|
|
||||||
DTSTAMP:20241105T122934Z
|
|
||||||
DTSTART:20241009T173000Z
|
|
||||||
DTEND:20241009T183000Z
|
|
||||||
SUMMARY:work do
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
|
@ -1,16 +0,0 @@
|
||||||
{
|
|
||||||
"id": "Time_Based_Calendar",
|
|
||||||
"linkGroupName": "Time Based Calendar",
|
|
||||||
"calendars": [
|
|
||||||
{
|
|
||||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\other_work.ics",
|
|
||||||
"prefix": "other_work",
|
|
||||||
"override": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\work.ics",
|
|
||||||
"prefix": "work",
|
|
||||||
"override": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,320 +0,0 @@
|
||||||
BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//Calendar Labs//Calendar 1.0//EN
|
|
||||||
CALSCALE:GREGORIAN
|
|
||||||
METHOD:PUBLISH
|
|
||||||
X-WR-CALNAME:Russia Holidays
|
|
||||||
X-WR-TIMEZONE:Etc/GMT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day
|
|
||||||
DTSTART;VALUE=DATE:20240101
|
|
||||||
DTEND;VALUE=DATE:20240101
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcb9111729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day Holiday
|
|
||||||
DTSTART;VALUE=DATE:20240102
|
|
||||||
DTEND;VALUE=DATE:20240102
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcba351729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day Holiday
|
|
||||||
DTSTART;VALUE=DATE:20240103
|
|
||||||
DTEND;VALUE=DATE:20240103
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcbb4a1729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day Holiday
|
|
||||||
DTSTART;VALUE=DATE:20240104
|
|
||||||
DTEND;VALUE=DATE:20240104
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcbc471729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day Holiday
|
|
||||||
DTSTART;VALUE=DATE:20240105
|
|
||||||
DTEND;VALUE=DATE:20240105
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcbd3c1729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Orthodox Christmas
|
|
||||||
DTSTART;VALUE=DATE:20240107
|
|
||||||
DTEND;VALUE=DATE:20240107
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/orthodox-christmas.php to know more about Orthodox Christmas. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcbe351729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Orthodox Christmas Holiday
|
|
||||||
DTSTART;VALUE=DATE:20240108
|
|
||||||
DTEND;VALUE=DATE:20240108
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/orthodox-christmas.php to know more about Orthodox Christmas Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcbf5b1729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Defender of the Fatherland
|
|
||||||
DTSTART;VALUE=DATE:20240223
|
|
||||||
DTEND;VALUE=DATE:20240223
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/defender-of-the-fatherland.php to know more about Defender of the Fatherland. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcc0661729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Intl. Women's Day
|
|
||||||
DTSTART;VALUE=DATE:20240308
|
|
||||||
DTEND;VALUE=DATE:20240308
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/international/international-womens-day.php to know more about Intl. Women's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcc16e1729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Spring and Labor Day
|
|
||||||
DTSTART;VALUE=DATE:20240501
|
|
||||||
DTEND;VALUE=DATE:20240501
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/uk/may-day.php to know more about Spring and Labor Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcc26f1729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Victory Day
|
|
||||||
DTSTART;VALUE=DATE:20240509
|
|
||||||
DTEND;VALUE=DATE:20240509
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/victory-day.php to know more about Victory Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcc36f1729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Russia Day
|
|
||||||
DTSTART;VALUE=DATE:20240612
|
|
||||||
DTEND;VALUE=DATE:20240612
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/russia-day.php to know more about Russia Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcc4771729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Civil Unity Day
|
|
||||||
DTSTART;VALUE=DATE:20241104
|
|
||||||
DTEND;VALUE=DATE:20241104
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/unity-day.php to know more about Civil Unity Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcc57d1729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day
|
|
||||||
DTSTART;VALUE=DATE:20250101
|
|
||||||
DTEND;VALUE=DATE:20250101
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcc6811729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day Holiday
|
|
||||||
DTSTART;VALUE=DATE:20250102
|
|
||||||
DTEND;VALUE=DATE:20250102
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcc7881729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day Holiday
|
|
||||||
DTSTART;VALUE=DATE:20250103
|
|
||||||
DTEND;VALUE=DATE:20250103
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcc8911729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day Holiday
|
|
||||||
DTSTART;VALUE=DATE:20250104
|
|
||||||
DTEND;VALUE=DATE:20250104
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcc9a21729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day Holiday
|
|
||||||
DTSTART;VALUE=DATE:20250105
|
|
||||||
DTEND;VALUE=DATE:20250105
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bccac61729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Orthodox Christmas
|
|
||||||
DTSTART;VALUE=DATE:20250107
|
|
||||||
DTEND;VALUE=DATE:20250107
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/orthodox-christmas.php to know more about Orthodox Christmas. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bccbd41729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Orthodox Christmas Holiday
|
|
||||||
DTSTART;VALUE=DATE:20250108
|
|
||||||
DTEND;VALUE=DATE:20250108
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/orthodox-christmas.php to know more about Orthodox Christmas Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bccceb1729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Defender of the Fatherland
|
|
||||||
DTSTART;VALUE=DATE:20250224
|
|
||||||
DTEND;VALUE=DATE:20250224
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/defender-of-the-fatherland.php to know more about Defender of the Fatherland. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcce091729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Intl. Women's Day
|
|
||||||
DTSTART;VALUE=DATE:20250310
|
|
||||||
DTEND;VALUE=DATE:20250310
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/international/international-womens-day.php to know more about Intl. Women's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bccf3b1729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Spring and Labor Day
|
|
||||||
DTSTART;VALUE=DATE:20250501
|
|
||||||
DTEND;VALUE=DATE:20250501
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/uk/may-day.php to know more about Spring and Labor Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcd0531729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Victory Day
|
|
||||||
DTSTART;VALUE=DATE:20250509
|
|
||||||
DTEND;VALUE=DATE:20250509
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/victory-day.php to know more about Victory Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcd16f1729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Russia Day
|
|
||||||
DTSTART;VALUE=DATE:20250612
|
|
||||||
DTEND;VALUE=DATE:20250612
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/russia-day.php to know more about Russia Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcd2961729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Civil Unity Day
|
|
||||||
DTSTART;VALUE=DATE:20251104
|
|
||||||
DTEND;VALUE=DATE:20251104
|
|
||||||
LOCATION:Russia
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/unity-day.php to know more about Civil Unity Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:67164e0bcd3b51729515019@calendarlabs.com
|
|
||||||
DTSTAMP:20241021T125019Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
|
@ -1,320 +0,0 @@
|
||||||
BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
PRODID:-//Calendar Labs//Calendar 1.0//EN
|
|
||||||
CALSCALE:GREGORIAN
|
|
||||||
METHOD:PUBLISH
|
|
||||||
X-WR-CALNAME:US Holidays
|
|
||||||
X-WR-TIMEZONE:Etc/GMT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day
|
|
||||||
DTSTART;VALUE=DATE:20240101
|
|
||||||
DTEND;VALUE=DATE:20240101
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca14c1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:M L King Day
|
|
||||||
DTSTART;VALUE=DATE:20240115
|
|
||||||
DTEND;VALUE=DATE:20240115
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/martin-luther-king-day.php to know more about M L King Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca1e81728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Presidents' Day
|
|
||||||
DTSTART;VALUE=DATE:20240219
|
|
||||||
DTEND;VALUE=DATE:20240219
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/presidents-day.php to know more about Presidents' Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca27d1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Good Friday
|
|
||||||
DTSTART;VALUE=DATE:20240329
|
|
||||||
DTEND;VALUE=DATE:20240329
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/good-friday.php to know more about Good Friday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca3161728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Easter Sunday
|
|
||||||
DTSTART;VALUE=DATE:20240331
|
|
||||||
DTEND;VALUE=DATE:20240331
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/easter.php to know more about Easter Sunday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca3ad1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Memorial Day
|
|
||||||
DTSTART;VALUE=DATE:20240527
|
|
||||||
DTEND;VALUE=DATE:20240527
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/memorial-day.php to know more about Memorial Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca44a1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Juneteenth
|
|
||||||
DTSTART;VALUE=DATE:20240619
|
|
||||||
DTEND;VALUE=DATE:20240619
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/juneteenth.php to know more about Juneteenth. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca4dc1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Independence Day
|
|
||||||
DTSTART;VALUE=DATE:20240704
|
|
||||||
DTEND;VALUE=DATE:20240704
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/independence-day.php to know more about Independence Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca5731728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Labor Day
|
|
||||||
DTSTART;VALUE=DATE:20240902
|
|
||||||
DTEND;VALUE=DATE:20240902
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/labor-day.php to know more about Labor Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca60a1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Columbus Day
|
|
||||||
DTSTART;VALUE=DATE:20241014
|
|
||||||
DTEND;VALUE=DATE:20241014
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/columbus-day.php to know more about Columbus Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca69e1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Veterans Day
|
|
||||||
DTSTART;VALUE=DATE:20241111
|
|
||||||
DTEND;VALUE=DATE:20241111
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/veterans-day.php to know more about Veterans Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca7351728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Thanksgiving Day
|
|
||||||
DTSTART;VALUE=DATE:20241128
|
|
||||||
DTEND;VALUE=DATE:20241128
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/thanksgiving-day.php to know more about Thanksgiving Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca7c61728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Christmas
|
|
||||||
DTSTART;VALUE=DATE:20241225
|
|
||||||
DTEND;VALUE=DATE:20241225
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/christmas.php to know more about Christmas. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca8631728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:New Year's Day
|
|
||||||
DTSTART;VALUE=DATE:20250101
|
|
||||||
DTEND;VALUE=DATE:20250101
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca8fe1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:M L King Day
|
|
||||||
DTSTART;VALUE=DATE:20250120
|
|
||||||
DTEND;VALUE=DATE:20250120
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/martin-luther-king-day.php to know more about M L King Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93cca99a1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Presidents' Day
|
|
||||||
DTSTART;VALUE=DATE:20250217
|
|
||||||
DTEND;VALUE=DATE:20250217
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/presidents-day.php to know more about Presidents' Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccaa361728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Good Friday
|
|
||||||
DTSTART;VALUE=DATE:20250418
|
|
||||||
DTEND;VALUE=DATE:20250418
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/good-friday.php to know more about Good Friday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccaad11728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Easter Sunday
|
|
||||||
DTSTART;VALUE=DATE:20250420
|
|
||||||
DTEND;VALUE=DATE:20250420
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/easter.php to know more about Easter Sunday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccab6b1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Memorial Day
|
|
||||||
DTSTART;VALUE=DATE:20250526
|
|
||||||
DTEND;VALUE=DATE:20250526
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/memorial-day.php to know more about Memorial Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccac0d1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Juneteenth
|
|
||||||
DTSTART;VALUE=DATE:20250619
|
|
||||||
DTEND;VALUE=DATE:20250619
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/juneteenth.php to know more about Juneteenth. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccacac1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Independence Day
|
|
||||||
DTSTART;VALUE=DATE:20250704
|
|
||||||
DTEND;VALUE=DATE:20250704
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/independence-day.php to know more about Independence Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccad4a1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Labor Day
|
|
||||||
DTSTART;VALUE=DATE:20250901
|
|
||||||
DTEND;VALUE=DATE:20250901
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/labor-day.php to know more about Labor Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccadea1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Columbus Day
|
|
||||||
DTSTART;VALUE=DATE:20251013
|
|
||||||
DTEND;VALUE=DATE:20251013
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/columbus-day.php to know more about Columbus Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccae8a1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Veterans Day
|
|
||||||
DTSTART;VALUE=DATE:20251111
|
|
||||||
DTEND;VALUE=DATE:20251111
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/veterans-day.php to know more about Veterans Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccaf2b1728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Thanksgiving Day
|
|
||||||
DTSTART;VALUE=DATE:20251127
|
|
||||||
DTEND;VALUE=DATE:20251127
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/thanksgiving-day.php to know more about Thanksgiving Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccafd01728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Christmas
|
|
||||||
DTSTART;VALUE=DATE:20251225
|
|
||||||
DTEND;VALUE=DATE:20251225
|
|
||||||
LOCATION:United States
|
|
||||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/christmas.php to know more about Christmas. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
|
||||||
UID:6704d93ccb0721728371004@calendarlabs.com
|
|
||||||
DTSTAMP:20241008T070324Z
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
SEQUENCE:0
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
|
@ -1,89 +0,0 @@
|
||||||
BEGIN:VCALENDAR
|
|
||||||
VERSION:2.0
|
|
||||||
METHOD:PUBLISH
|
|
||||||
PRODID:-//schulferien.org//iCal Generator//DE
|
|
||||||
BEGIN:VEVENT
|
|
||||||
CREATED:20240921T032002Z
|
|
||||||
LAST-MODIFIED:20240921T032002Z
|
|
||||||
DTSTAMP:20240921T032002Z
|
|
||||||
SUMMARY:Winterferien 2023 Bayern
|
|
||||||
DTSTART;VALUE=DATE:20230220
|
|
||||||
DTEND;VALUE=DATE:20230225
|
|
||||||
URL:http://www.schulferien.org
|
|
||||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
UID:F_2023_termin66ee1f432d75c@schulferien.org
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
CREATED:20240921T032002Z
|
|
||||||
LAST-MODIFIED:20240921T032002Z
|
|
||||||
DTSTAMP:20240921T032002Z
|
|
||||||
SUMMARY:Osterferien 2023 Bayern
|
|
||||||
DTSTART;VALUE=DATE:20230403
|
|
||||||
DTEND;VALUE=DATE:20230416
|
|
||||||
URL:http://www.schulferien.org
|
|
||||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
UID:F_2023_termin66ee1f432dc7f@schulferien.org
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
CREATED:20240921T032002Z
|
|
||||||
LAST-MODIFIED:20240921T032002Z
|
|
||||||
DTSTAMP:20240921T032002Z
|
|
||||||
SUMMARY:Pfingstferien 2023 Bayern
|
|
||||||
DTSTART;VALUE=DATE:20230530
|
|
||||||
DTEND;VALUE=DATE:20230610
|
|
||||||
URL:http://www.schulferien.org
|
|
||||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
UID:F_2023_termin66ee1f432dccb@schulferien.org
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
CREATED:20240921T032002Z
|
|
||||||
LAST-MODIFIED:20240921T032002Z
|
|
||||||
DTSTAMP:20240921T032002Z
|
|
||||||
SUMMARY:Sommerferien 2023 Bayern
|
|
||||||
DTSTART;VALUE=DATE:20230731
|
|
||||||
DTEND;VALUE=DATE:20230912
|
|
||||||
URL:http://www.schulferien.org
|
|
||||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
UID:F_2023_termin66ee1f432dd04@schulferien.org
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
CREATED:20240921T032002Z
|
|
||||||
LAST-MODIFIED:20240921T032002Z
|
|
||||||
DTSTAMP:20240921T032002Z
|
|
||||||
SUMMARY:Herbstferien 2023 Bayern
|
|
||||||
DTSTART;VALUE=DATE:20231030
|
|
||||||
DTEND;VALUE=DATE:20231104
|
|
||||||
URL:http://www.schulferien.org
|
|
||||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
UID:F_2023_termin66ee1f432dd29@schulferien.org
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
CREATED:20240921T032002Z
|
|
||||||
LAST-MODIFIED:20240921T032002Z
|
|
||||||
DTSTAMP:20240921T032002Z
|
|
||||||
SUMMARY:Herbstferien 2023 Bayern
|
|
||||||
DTSTART;VALUE=DATE:20231122
|
|
||||||
DTEND;VALUE=DATE:20231123
|
|
||||||
URL:http://www.schulferien.org
|
|
||||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
UID:F_2023_termin66ee1f432dd58@schulferien.org
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
CREATED:20240921T032002Z
|
|
||||||
LAST-MODIFIED:20240921T032002Z
|
|
||||||
DTSTAMP:20240921T032002Z
|
|
||||||
SUMMARY:Weihnachtsferien 2023 Bayern
|
|
||||||
DTSTART;VALUE=DATE:20231223
|
|
||||||
DTEND;VALUE=DATE:20240106
|
|
||||||
URL:http://www.schulferien.org
|
|
||||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
|
||||||
TRANSP:TRANSPARENT
|
|
||||||
UID:F_2023_termin66ee1f432dd7c@schulferien.org
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
|
@ -1,32 +0,0 @@
|
||||||
BEGIN:VCALENDAR
|
|
||||||
PRODID:-//Google Inc//Google Calendar 70.9054//EN
|
|
||||||
VERSION:2.0
|
|
||||||
CALSCALE:GREGORIAN
|
|
||||||
METHOD:PUBLISH
|
|
||||||
X-WR-CALNAME:other work
|
|
||||||
X-WR-TIMEZONE:Africa/Nairobi
|
|
||||||
BEGIN:VEVENT
|
|
||||||
DTSTART:20241001T183000Z
|
|
||||||
DTEND:20241001T193000Z
|
|
||||||
DTSTAMP:20241104T123219Z
|
|
||||||
UID:5rplp3qqvjadm1bc210un9po2l@google.com
|
|
||||||
CREATED:20241001T194435Z
|
|
||||||
LAST-MODIFIED:20241001T194435Z
|
|
||||||
SEQUENCE:0
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
SUMMARY:calmerge
|
|
||||||
TRANSP:OPAQUE
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
DTSTART:20241010T173000Z
|
|
||||||
DTEND:20241010T183000Z
|
|
||||||
DTSTAMP:20241104T123219Z
|
|
||||||
UID:58f1gf5cbp8k1du2chiufuo510@google.com
|
|
||||||
CREATED:20241010T123352Z
|
|
||||||
LAST-MODIFIED:20241010T123352Z
|
|
||||||
SEQUENCE:0
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
SUMMARY:to do
|
|
||||||
TRANSP:OPAQUE
|
|
||||||
END:VEVENT
|
|
||||||
END:VCALENDAR
|
|
Loading…
Reference in New Issue