#
tokens: 33879/50000 24/24 files
lines: off (toggle) GitHub
raw markdown copy
# Directory Structure

```
├── .gitignore
├── .npmignore
├── docs
│   ├── google-search-spec.md
│   └── publish-npm.md
├── jest.config.mjs
├── LICENSE
├── package-lock.json
├── package.json
├── README.md
├── src
│   ├── index.ts
│   ├── tools
│   │   ├── fetch.ts
│   │   └── search.ts
│   ├── toolsImpl
│   │   ├── searchTool
│   │   │   └── index.ts
│   │   └── webFetchTool
│   │       ├── htmlParser.ts
│   │       ├── index.ts
│   │       ├── scriptGenerator.ts
│   │       └── types.ts
│   ├── types
│   │   └── search.ts
│   └── utils
│       ├── osascript.ts
│       └── url.ts
├── test
│   ├── data
│   │   └── wikipedia.home.html
│   ├── integration
│   │   ├── web-fetch.test.ts
│   │   └── web-search-tool.test.ts
│   └── unit
│       ├── web-fetch.test.ts
│       └── web-search-url.test.ts
└── tsconfig.json
```

# Files

--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------

```
# Source
src/

# Tests
**/*.test.ts
**/*.spec.ts
coverage/
jest.config.js

# Development configs
.eslintrc
.prettierrc
tsconfig.json
.editorconfig
.git*

# IDE
.vscode/
.idea/

# Logs
*.log
npm-debug.log*

# Dependencies
node_modules/

# Misc
.DS_Store
*.env
.env.*
```

--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------

```
# Dependencies
node_modules/
.pnp/
.pnp.js

# Production build
dist/
build/

# TypeScript cache
*.tsbuildinfo

# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# Logs
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.idea/
.vscode/
*.swp
*.swo
.DS_Store
*.sublime-workspace
*.sublime-project

# Testing
coverage/

# Temporary files
*.tmp
*.temp

# Debug
.debug/

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
.aider*

```

--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------

```markdown
# MCP Chrome Google Search Tool

MCP tool for Google search and webpage content extraction using Chrome browser. Works with Claude to enable Google search and content fetching capabilities.

## Quick Installation

1. **Configure Claude Desktop**
   - Open Claude Desktop on Mac
   - Go to Claude > Settings > Developer > Edit Config
   - Add the following to your config file:
   ```json
   {
     "mcpServers": {
       "mcp-chrome-google-search": {
         "command": "npx",
         "args": [
           "-y",
           "@cmann50/mcp-chrome-google-search"
         ]
       }
     }
   }
   ```
   - Restart Claude Desktop

2. **First Time Setup**
   - **Grant Accessibility Permissions**
     - On first run, approve macOS accessibility permissions prompt
     - Navigate to: System Preferences > Security & Privacy > Privacy > Accessibility
     - Add and enable permissions for your terminal app

   - **Enable Chrome JavaScript from Apple Events**
     - Open Chrome
     - Navigate to: View > Developer > Allow JavaScript from Apple Events
     - One-time setup only

Once configured, Claude will be able to perform Google searches and extract webpage content through Chrome when you make requests.

## Key Advantages

- Free to search google
- Opens and small windows and uses your chrome browser, so should not get blocked
- Since it is using your Chrome window it can access authenticated content.  Claude can just open the URL in your browser.

## Platform Support
- ✅ macOS
- ❌ Windows (not supported)
- ❌ Linux (not supported)

## Requirements
1. macOS
2. Google Chrome
3. Node.js 20 or higher

## Alternative Installation Methods

### NPX Installation
```bash
npx mcp-chrome-google-search
```


### Custom Installation
1. Checkout from git
2. Run `npm run build`
3. Add to Claude config (use absolute path):
```json
{
    "google-tools": {
        "command": "node",
        "args": [
            "/your/checkout/path/mcp/mcp-chrome-google-search/dist/index.js"
        ]
    }
}
```

## Local development

To test changes locally bump package.json version and run
to put it in edit mode:
```
npm install -g .
```
Then just do `npm run build` and the files will go in dist where claude is monitoring

Then press ctrl-R in claude desktop, no need to restart it

## Debugging

### Log Monitoring
```bash
# Follow logs in real-time
tail -n 20 -F ~/Library/Logs/Claude/mcp*.log
```

### Dev Tools Access
1. Enable developer settings:
```bash
echo '{"allowDevTools": true}' > ~/Library/Application\ Support/Claude/developer_settings.json
```
2. Open DevTools: Command-Option-Shift-i in Claude desktop
3. Use ctrl-r in Claude desktop while tailing for better errors

## Troubleshooting

### Chrome JavaScript Error
If you see:
```
execution error: Google Chrome got an error: Executing JavaScript through AppleScript 
is turned off. For more information: https://support.google.com/chrome/?p=applescript (12)
```

Solution:
1. Open Chrome
2. View > Developer > Allow JavaScript from Apple Events

### Accessibility Permission Issues
If Chrome control fails:
1. Open System Preferences
2. Security & Privacy > Privacy > Accessibility
3. Ensure terminal app is listed and enabled
4. Use lock icon to make changes if needed

## Implementation Details

- Uses AppleScript for Chrome control
- Visible automation - Chrome windows will open/navigate
- Each request opens a new Chrome tab
- Close unused tabs periodically for optimal performance
- Only use with trusted Claude instances (has Chrome control access)

## Support

- Create GitHub issues for problems
- Include macOS and Chrome version details

## License

MIT License - see LICENSE file for details
```

--------------------------------------------------------------------------------
/src/types/search.ts:
--------------------------------------------------------------------------------

```typescript
export interface SearchParams {
  query_text: string;
  site?: string;
  timeframe?: 'h' | 'd' | 'w' | 'm' | 'y';
}

export interface SearchResult {
  url: string;
  description: string;
}
```

--------------------------------------------------------------------------------
/src/toolsImpl/webFetchTool/types.ts:
--------------------------------------------------------------------------------

```typescript
export interface Link {
  text: string;
  url: string;
}

export interface ParsedContent {
  text: string;
  links: Link[];
}

export interface WebContentOptions {
  includeLinks?: boolean;
}
```

--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------

```json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ES2022",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true
  },
  "include": ["src/**/*"]
}
```

--------------------------------------------------------------------------------
/docs/publish-npm.md:
--------------------------------------------------------------------------------

```markdown
# Publishing Guide

## NPM
```bash
# Update version
npm version patch|minor|major

# Build and publish
npm run build
npm publish --access public
```

## GitHub
```bash
# Push changes
git add .
git commit -m "feat: description"
git push origin main

# Push tags
git push --tags
```

Note: Ensure you're logged into npm (`npm login`) and GitHub before publishing.
```

--------------------------------------------------------------------------------
/src/utils/osascript.ts:
--------------------------------------------------------------------------------

```typescript
import { execFile } from 'node:child_process';
import { promisify } from 'node:util';

const execFileAsync = promisify(execFile);

export async function runOsascript(script: string): Promise<string> {
  // Set maxBuffer to 10MB (10 * 1024 * 1024)
  const { stdout } = await execFileAsync('osascript', ['-e', script], {
    maxBuffer: 10 * 1024 * 1024
  });
  return stdout;
}
```

--------------------------------------------------------------------------------
/jest.config.mjs:
--------------------------------------------------------------------------------

```
export default {
  preset: 'ts-jest',
  testEnvironment: 'node',
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
  testMatch: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)'],
  extensionsToTreatAsEsm: ['.ts'],
  transform: {
    '^.+\\.tsx?$': ['ts-jest', {
      useESM: true,
    }]
  },
  moduleNameMapper: {
    '^(\\.{1,2}/.*)\\.js$': '$1',
  }
};
```

--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------

```typescript
#!/usr/bin/env node

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { registerSearchTool } from './tools/search.js';
import { registerFetchTool } from './tools/fetch.js';

const server = new McpServer({
  name: "mcp-chrome-google-search",
  version: "1.0.0",
});

registerSearchTool(server);
registerFetchTool(server);

async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.error("MCP Chrome Google Search Server running on stdio");
}

main().catch(error => {
  console.error("Fatal error:", error);
  process.exit(1);
});
```

--------------------------------------------------------------------------------
/src/utils/url.ts:
--------------------------------------------------------------------------------

```typescript
import type { SearchParams } from '../types/search.js';

function formatDate(date: Date): string {
  return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;
}

export function buildGoogleSearchUrl(params: SearchParams, pageNum: number = 0): string {
  // Build base query
  let searchQuery = params.query_text;
  
  // Add site restriction if specified
  if (params.site) {
    searchQuery = `site:${params.site} ${searchQuery}`;
  }
  
  // Base URL with encoded query and page number
  let url = `https://www.google.com/search?q=${encodeURIComponent(searchQuery)}&hl=en&start=${pageNum * 10}`;
  
  // Add time restriction if specified
  if (params.timeframe) {
    url += `&tbs=qdr:${params.timeframe}`;
  }
  
  return url;
}
```

--------------------------------------------------------------------------------
/src/toolsImpl/webFetchTool/scriptGenerator.ts:
--------------------------------------------------------------------------------

```typescript
export function generateAppleScript(url: string): string {
  const script = `
    tell application "Google Chrome"
      make new window with properties {bounds:{50, 50, 425, 717}}
      set newWindow to window 1
      
      tell newWindow
        set URL of active tab to "${url}"
      end tell
      
      -- Return focus to Claude
      tell application "Claude" to activate

      -- Wait for page to load
      tell active tab of newWindow
        repeat until (loading is false)
          delay 0.1
        end repeat
      end tell
      
      -- Get page content
      tell active tab of newWindow
        set pageContent to (execute javascript "document.documentElement.outerHTML;")
      end tell
      
      -- Close the window
      close newWindow
    end tell
    
    return pageContent
  `;
  return script;
}
```

--------------------------------------------------------------------------------
/src/toolsImpl/webFetchTool/index.ts:
--------------------------------------------------------------------------------

```typescript
import { runOsascript } from '../../utils/osascript.js';
import { generateAppleScript } from './scriptGenerator.js';
import { parseHtml } from './htmlParser.js';
import type { WebContentOptions } from './types.js';

export async function getWebContent(url: string, options: WebContentOptions = {}): Promise<string> {
  try {
    const script = generateAppleScript(url);
    const rawContent = await runOsascript(script);
    
    if (!rawContent) {
      throw new Error('No content received from page');
    }
    
    const { text, links } = parseHtml(rawContent);
    
    if (!options.includeLinks || links.length === 0) {
      return text;
    }

    return `${text}\n\n=== Links ===\n${links.map(link => 
      `${link.text} (${link.url})`).join('\n')}`;
      
  } catch (error: unknown) {
    throw new Error(`Failed to get web content: ${error instanceof Error ? error.message : String(error)}`);
  }
}
```

--------------------------------------------------------------------------------
/docs/google-search-spec.md:
--------------------------------------------------------------------------------

```markdown
# Google Search URL Specification

## Basic Search URLs

```
# Basic search
https://www.google.com/search?q=news

# Site-specific search
https://www.google.com/search?q=site:apple.com+news

# Site-specific search with time filter
https://www.google.com/search?q=site:apple.com+news&tbs=qdr:d
```

## Time Filter Parameters

Relative time filters using `tbs=qdr:X`:
```
h : past hour
d : past 24 hours
w : past week
m : past month
y : past year
```

Custom date range using `tbs=cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY`:
```
Example: tbs=cdr:1,cd_min:12/1/2024,cd_max:12/31/2024
```

## TypeScript Interface

```typescript
interface SearchParams {
  query_text: string;  // Plain text to search for (no Google operators)

  site?: string;          // Optional site restriction (e.g. "apple.com")
  timeframe?: {
    type: 'relative';     // For qdr: filters
    period: 'h' | 'd' | 'w' | 'm' | 'y';
  } | {
    type: 'custom';       // For custom date range
    startDate: Date;      // Will be formatted as MM/DD/YYYY
    endDate: Date;
  };
}
```

Note: The query_text parameter and date portions in custom date ranges require URL encoding.
```

--------------------------------------------------------------------------------
/src/tools/fetch.ts:
--------------------------------------------------------------------------------

```typescript
import { z } from "zod";
import { getWebContent } from '../toolsImpl/webFetchTool/index.js';
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

export function registerFetchTool(server: McpServer) {
  server.tool(
    "web_fetch",
    "Extract readable text content from a webpage using Chrome browser automation.\n\nKey Features:\n- Returns main content text and optionally links",
    {
      url: z.string().url()
        .describe("Webpage URL to fetch (must include http:// or https://)"),
      
      includeLinks: z.boolean().optional().default(false)
        .describe("Whether to include extracted links in the output")
    },
    async ({ url, includeLinks }) => {
      try {
        const content = await getWebContent(url, { includeLinks });
        if (!content) {
          return {
            content: [{
              type: "text",
              text: "Failed to retrieve web content"
            }]
          };
        }

        // Ensure the content is properly formatted and trimmed
        const formattedContent = content.trim();
        
        return {
          content: [{
            type: "text",
            text: formattedContent
          }]
        };
      } catch (error) {
        const errorMessage = error instanceof Error ? error.message : String(error);
        return {
          content: [{
            type: "text",
            text: `Content fetch failed - please try again: ${errorMessage}`.trim()
          }]
        };
      }
    }
  );
}
```

--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------

```json
{
  "name": "@cmann50/mcp-chrome-google-search",
  "version": "1.0.6",
  "type": "module",
  "bin": {
    "mcp-chrome-google-search": "./dist/index.js"
  },
  "files": [
    "dist"
  ],
  "main": "dist/index.js",
  "scripts": {
    "build": "tsc && chmod +x dist/*.js",
    "prepare": "npm run build",
    "start": "node dist/index.js",
    "test": "NODE_OPTIONS=--experimental-vm-modules jest --config jest.config.mjs",
    "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --config jest.config.mjs --watch",
    "test:coverage": "NODE_OPTIONS=--experimental-vm-modules jest --config jest.config.mjs --coverage"
  },
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.0.0",
    "@types/cheerio": "^0.22.35",
    "cheerio": "^1.0.0",
    "zod": "^3.22.0"
  },
  "devDependencies": {
    "@types/jest": "^29.5.14",
    "@types/node": "^20.0.0",
    "jest": "^29.7.0",
    "ts-jest": "^29.2.5",
    "typescript": "^5.0.0"
  },
  "types": "./dist/index.d.ts",
  "description": "MCP tool for Google search and webpage content extraction using Chrome browser. Works with Claude to enable Google search and content fetching capabilities.",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/cmann50/mcp-chrome-google-search.git"
  },
  "keywords": [
    "mcp",
    "model-context-protocol",
    "claude-desktop-tool",
    "google-search",
    "chrome",
    "web-search",
    "macos",
    "browser-automation"
  ],
  "author": "Chris Mann",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/cmann50/mcp-chrome-google-search/issues"
  },
  "homepage": "https://github.com/cmann50/mcp-chrome-google-search#readme"
}

```

--------------------------------------------------------------------------------
/src/tools/search.ts:
--------------------------------------------------------------------------------

```typescript
import { z } from "zod";
import { performGoogleSearch } from '../toolsImpl/searchTool/index.js';
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

export function registerSearchTool(server: McpServer) {
  server.tool(
    "web-search",
    "Search webpages and get a specific page of results (each page has ~10 results). Optionally filter by site and timeframe.",
    {
      query_text: z.string().min(1).describe("Plain text to search for (no Google operators plain text only - use other parameters for site/date filtering)"),
      site: z.string().optional().describe("Limit search to specific domain (e.g. 'github.com' or 'docs.python.org')"),
      timeframe: z.enum(['h', 'd', 'w', 'm', 'y']).optional().describe("Time range filter (h=hour, d=day, w=week, m=month, y=year)"),
      pageNumber: z.number().min(1).max(5).optional().default(1).describe(
        "Which page of results to fetch (1-5). Each page contains ~10 results"
      )
    },
    async ({ query_text, site, timeframe, pageNumber }) => {
      console.error(`Executing Google search for: ${query_text} (page ${pageNumber})`);
      try {
        const searchParams = { query_text, site, timeframe };
        const results = await performGoogleSearch(searchParams, pageNumber);

        return {
          content: [{
            type: "text" as const,
            text: results
          }]
        };
      } catch (error) {
        return {
          content: [{
            type: "text" as const,
            text: `Search failed - please try again: ${error instanceof Error ? error.message : String(error)}`
          }],
          isError: true
        };
      }
    }
  );
}

```

--------------------------------------------------------------------------------
/test/unit/web-fetch.test.ts:
--------------------------------------------------------------------------------

```typescript
import { jest } from '@jest/globals';
import fs from 'fs';
import path from 'path';
import { registerFetchTool } from '../../src/tools/fetch';
import { getWebContent } from '../../src/toolsImpl/webFetchTool';
import { generateAppleScript } from '../../src/toolsImpl/webFetchTool/scriptGenerator';
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

// Define the type for the tool callback
type WebFetchCallback = (params: { url: string; includeLinks?: boolean }) => Promise<{
  content: Array<{ type: string; text: string }>;
}>;

// Mock the script generator
jest.mock('../../src/toolsImpl/webFetchTool/scriptGenerator');

// Mock utils/osascript
jest.mock('../../src/utils/osascript', () => ({
  runOsascript: jest.fn().mockImplementation(async () => {
    // Read the fixture file
    const fixturePath = path.join(__dirname, '../data/wikipedia.home.html');
    return fs.readFileSync(fixturePath, 'utf-8');
  })
}));

describe('Web Fetch Tool', () => {
  const mockServer = {
    tool: jest.fn()
  };

  beforeEach(() => {
    jest.clearAllMocks();
  });

  it('should fetch and process web content', async () => {
    // Register the tool
    registerFetchTool(mockServer as unknown as McpServer);

    // Get the callback function that was passed to mockServer.tool
    const toolCallback = mockServer.tool.mock.calls[0][3] as WebFetchCallback;
    
    // Call the callback with test parameters
    const result = await toolCallback({ 
      url: 'https://wikipedia.org', 
      includeLinks: true 
    });

    // Print the returned text for now
    console.log('Returned content:', result.content[0].text);

    // Basic assertions
    expect(result).toBeDefined();
    expect(result.content).toBeInstanceOf(Array);
    expect(result.content[0].type).toBe('text');
    expect(result.content[0].text).toBeTruthy();
  });

  // Add more test cases as needed
});

```

--------------------------------------------------------------------------------
/test/integration/web-fetch.test.ts:
--------------------------------------------------------------------------------

```typescript
import {getWebContent} from '../../src/toolsImpl/webFetchTool';

describe('web-fetch Tool', () => {
    it('should fetch and parse content from a URL', async () => {
        const url = 'https://apple.com';

        try {
            console.log('Test: Calling getWebContent with URL:', url);
            const result = await getWebContent(url);
            console.log('Test: Received result type:', typeof result);
            console.log('Test: Result length:', result?.length);
            console.log('Test: Raw result:', result);

            // Check that we got content
            expect(result).toBeTruthy();
            expect(result.length).toBeGreaterThan(0);

            // Basic content validation - apple.com should contain Apple-related content
            expect(result.toLowerCase()).toMatch(/apple|iphone|mac|ipad/);

            // Log the results for inspection
            console.log('Web Content Results:');
            console.log('-----------------');
            console.log(result);
            console.log('-----------------');

        } catch (error: unknown) {
            const errorMessage = error instanceof Error ? error.message : String(error);
            throw new Error('Should not throw an error: ' + errorMessage);
        }
    }, 30000);

    it('should include links when requested', async () => {
        const url = 'https://apple.com';

        const result = await getWebContent(url, {includeLinks: true});

        // Check for links section and content
        expect(result).toBeTruthy();
        expect(result.length).toBeGreaterThan(0);

        // If we have links, they should be properly formatted
        if (result.includes('=== Links ===')) {
            expect(result).toMatch(/\([^)]+\)/);
        }

        console.log('Content with Links:');
        console.log('-----------------');
        console.log(result);
        console.log('-----------------');
    }, 30000);


});
```

--------------------------------------------------------------------------------
/src/toolsImpl/webFetchTool/htmlParser.ts:
--------------------------------------------------------------------------------

```typescript
import * as cheerio from 'cheerio';
import type { ParsedContent, Link } from './types.js';

export function parseHtml(htmlContent: string): ParsedContent {
  const $ = cheerio.load(htmlContent);
  
  // Only remove script and style elements
  $('script, style').remove();
  
  // Get meaningful content from the body
  const mainContent: string[] = [];
  
  // Process main content areas
  $('body').find('*').each((_, elem) => {
    const $elem = $(elem);
    
    // Skip hidden elements
    if ($elem.css('display') === 'none' || $elem.css('visibility') === 'hidden') {
      return;
    }
    
    // Get direct text nodes only (not nested text)
    const directText = $elem.clone().children().remove().end().text().trim();
    if (directText && directText.length > 0) {
      mainContent.push(directText);
    }
  });

  // Extract links
  const links: Link[] = [];
  const seenUrls = new Set<string>();
  const seenTexts = new Set<string>();
  
  $('a[href]').each((_, elem) => {
    const $elem = $(elem);
    const url = $elem.attr('href')?.trim();
    const text = $elem.text().trim();
    
    if (!url || !text || seenUrls.has(url) || seenTexts.has(text)) return;
    
    // Skip javascript: and other non-http links
    if (!url.startsWith('javascript:') && 
        !url.startsWith('tel:') &&
        !url.startsWith('mailto:') &&
        text.length > 2) {
      
      // Normalize URLs
      let finalUrl = url;
      if (url.startsWith('//')) {
        finalUrl = 'https:' + url;
      } else if (url.startsWith('/')) {
        // Handle relative URLs later when we have base URL
        finalUrl = url;
      }

      links.push({ text, url: finalUrl });
      seenUrls.add(finalUrl);
      seenTexts.add(text);
    }
  });

  // Clean and format the content
  const text = mainContent
    .filter(section => section.length > 0)
    .map(section => section
      .replace(/\\s+/g, ' ')  // Normalize whitespace
      .trim())
    .join('\\n')
    .replace(/\\n{3,}/g, '\\n\\n')  // Max 2 newlines in a row
    .trim();

  return {
    text: text || 'No content found on the page.',
    links: links.slice(0, 50)  // Include more links
  };
}
```

--------------------------------------------------------------------------------
/test/unit/web-search-url.test.ts:
--------------------------------------------------------------------------------

```typescript
import { buildGoogleSearchUrl } from '../../src/utils/url';
import type { SearchParams } from '../../src/types/search';

describe('web-search URL Generation', () => {
  it('generates basic search URL', () => {
    const params: SearchParams = {
      query_text: 'plain search text'
    };
    const url = buildGoogleSearchUrl(params);
    expect(url).toBe('https://www.google.com/search?q=plain%20search%20text&hl=en&start=0');
  });

  it('generates URL with site filter', () => {
    const params: SearchParams = {
      query_text: 'search text',
      site: 'example.com'
    };
    const url = buildGoogleSearchUrl(params);
    expect(url).toBe('https://www.google.com/search?q=site%3Aexample.com%20search%20text&hl=en&start=0');
  });

  it('generates URLs with time filters', () => {
    const periods: Array<'h' | 'd' | 'w' | 'm' | 'y'> = ['h', 'd', 'w', 'm', 'y'];
    
    periods.forEach(period => {
      const params: SearchParams = {
        query_text: 'news',
        timeframe: period
      };
      const url = buildGoogleSearchUrl(params);
      expect(url).toBe(`https://www.google.com/search?q=news&hl=en&start=0&tbs=qdr:${period}`);
    });
  });

  it('generates URLs for different pages', () => {
    const params: SearchParams = {
      query_text: 'test search'
    };
    
    // Test zero-based page numbers (0 = first page, 1 = second page, etc)
    const testCases = [
      { pageNum: 0, expected: 'https://www.google.com/search?q=test%20search&hl=en&start=0' },
      { pageNum: 1, expected: 'https://www.google.com/search?q=test%20search&hl=en&start=10' },
      { pageNum: 2, expected: 'https://www.google.com/search?q=test%20search&hl=en&start=20' }
    ];
    
    testCases.forEach(({ pageNum, expected }) => {
      const url = buildGoogleSearchUrl(params, pageNum);
      expect(url).toBe(expected);
    });
  });

  it('combines site filter with time filter', () => {
    const params: SearchParams = {
      query_text: 'release notes',
      site: 'github.com',
      timeframe: 'm'
    };
    const url = buildGoogleSearchUrl(params);
    expect(url).toBe('https://www.google.com/search?q=site%3Agithub.com%20release%20notes&hl=en&start=0&tbs=qdr:m');
  });
});
```

--------------------------------------------------------------------------------
/src/toolsImpl/searchTool/index.ts:
--------------------------------------------------------------------------------

```typescript
import { runOsascript } from '../../utils/osascript.js';
import { buildGoogleSearchUrl } from '../../utils/url.js';
import type { SearchParams, SearchResult } from '../../types/search.js';
import * as cheerio from 'cheerio';

function parseHtml(html: string): SearchResult[] {
  const $ = cheerio.load(html);
  const results: SearchResult[] = [];
  
  // Find all main result containers
  $('.g').each((_, resultDiv) => {
    // Look for the first link in this container
    const link = $(resultDiv).find('a').first();
    const href = link.attr('href');
    
    // Find the description - it's typically the last text block in the container
    const description = $(resultDiv).find('div[style*="-webkit-line-clamp"], div.VwiC3b, .aCOpRe').text();
    
    if (href?.startsWith('http') && 
        !href.includes('google.com') && 
        description.trim().length > 0) {
      results.push({
        url: href,
        description: description.trim()
      });
    }
  });
  
  return results;
}

async function fetchSearchPage(searchParams: SearchParams, pageNumber: number): Promise<SearchResult[]> {
  // Convert 1-based page number to 0-based for URL
  const pageIndex = pageNumber - 1;
  const searchUrl = buildGoogleSearchUrl(searchParams, pageIndex);
  
  const script = `
    tell application "Google Chrome"
      make new window with properties {bounds:{50, 50, 425, 717}}
      set newWindow to window 1
      
      tell newWindow
        set URL of active tab to "${searchUrl}"
      end tell
      
      -- Return focus to Claude
      tell application "Claude" to activate

      -- Wait for page to load
      tell active tab of newWindow
        repeat until (loading is false)
          delay 0.1
        end repeat
      end tell
      
      -- Get page content
      tell active tab of newWindow
        set pageContent to (execute javascript "document.documentElement.outerHTML;")
      end tell
       
      -- Close the window
      close newWindow
    end tell
    
    return pageContent
  `;

  const html = await runOsascript(script);
  return parseHtml(html);
}

export async function performGoogleSearch(searchParams: SearchParams, pages: number = 1): Promise<string> {
  try {
    const allResults: SearchResult[] = [];
    
    // Fetch results from multiple pages
    for (let page = 1; page <= pages; page++) {
      const pageResults = await fetchSearchPage(searchParams, page);
      allResults.push(...pageResults);
      
      // Add a small delay between page fetches
      if (page < pages) {
        await new Promise(resolve => setTimeout(resolve, 1000));
      }
    }
    
    return allResults.map(r => `${r.url}\n${r.description}`).join('\n\n');
  } catch (error: unknown) {
    const errorMessage = error instanceof Error ? error.message : String(error);
    throw new Error(`Failed to perform Google search: ${errorMessage}`);
  }
}
```

--------------------------------------------------------------------------------
/test/integration/web-search-tool.test.ts:
--------------------------------------------------------------------------------

```typescript
import { performGoogleSearch } from '../../src/toolsImpl/searchTool';
import type { SearchParams } from '../../src/types/search';

describe('web-search Tool', () => {
  it('should perform a basic search and return results', async () => {
    const searchParams: SearchParams = {
      query_text: 'integration test search'
    };
    
    try {
      const result = await performGoogleSearch(searchParams, 1);
      expect(result.length).toBeGreaterThan(0);
      
      const blocks = result.split('\n\n');
      expect(blocks.length).toBeGreaterThan(1);
      
      blocks.forEach((block: string) => {
        const [url, description] = block.split('\n');
        expect(url).toMatch(/^https?:\/\/.+/);
        expect(description?.length).toBeGreaterThan(0);
      });
      
    } catch (error: unknown) {
      const errorMessage = error instanceof Error ? error.message : String(error);
      throw new Error('Search should succeed: ' + errorMessage);
    }
  }, 30000);

  it('should handle site filtering', async () => {
    const searchParams: SearchParams = {
      query_text: 'documentation',
      site: 'nodejs.org'
    };
    
    try {
      const result = await performGoogleSearch(searchParams, 1);
      expect(result.length).toBeGreaterThan(0);
      
      const blocks = result.split('\n\n');
      blocks.forEach((block: string) => {
        const [url] = block.split('\n');
        expect(url).toContain('nodejs.org');
      });
      
    } catch (error: unknown) {
      const errorMessage = error instanceof Error ? error.message : String(error);
      throw new Error('Search with site filter should succeed: ' + errorMessage);
    }
  }, 30000);

  it('should handle time filtering', async () => {
    const searchParams: SearchParams = {
      query_text: 'news',
      timeframe: 'd'
    };
    
    try {
      const result = await performGoogleSearch(searchParams, 1);
      expect(result.length).toBeGreaterThan(0);
      
      const blocks = result.split('\n\n');
      expect(blocks.length).toBeGreaterThan(1);
      
    } catch (error: unknown) {
      const errorMessage = error instanceof Error ? error.message : String(error);
      throw new Error('Search with time filter should succeed: ' + errorMessage);
    }
  }, 30000);

  it('should successfully fetch multiple pages of results', async () => {
    const searchParams: SearchParams = {
      query_text: 'latest news'
    };
    
    try {
      // Test fetching 3 different pages
      for (let page = 1; page <= 3; page++) {
        const results = await performGoogleSearch(searchParams, page);
        
        // Basic validation that we got results
        expect(results.length).toBeGreaterThan(0);
        expect(results.split('\n\n').length).toBeGreaterThan(1);
      }
    } catch (error: unknown) {
      const errorMessage = error instanceof Error ? error.message : String(error);
      throw new Error('Failed to fetch multiple pages: ' + errorMessage);
    }
  }, 30000);
});
```

--------------------------------------------------------------------------------
/test/data/wikipedia.home.html:
--------------------------------------------------------------------------------

```html
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<title>Wikipedia</title>
<meta name="description" content="Wikipedia is a free online encyclopedia, created and edited by volunteers around the world and hosted by the Wikimedia Foundation.">
<script>
document.documentElement.className = document.documentElement.className.replace( /(^|\s)no-js(\s|$)/, "$1js-enabled$2" );
</script>
<meta name="viewport" content="initial-scale=1,user-scalable=yes">
<link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png">
<link rel="shortcut icon" href="/static/favicon/wikipedia.ico">
<link rel="license" href="//creativecommons.org/licenses/by-sa/4.0/">
<style>
.sprite{background-image:linear-gradient(transparent,transparent),url(portal/wikipedia.org/assets/img/sprite-de847d1a.svg);background-repeat:no-repeat;display:inline-block;vertical-align:middle}.svg-Commons-logo_sister{background-position:0 0;width:47px;height:47px}.svg-MediaWiki-logo_sister{background-position:0 -47px;width:42px;height:42px}.svg-Meta-Wiki-logo_sister{background-position:0 -89px;width:37px;height:37px}.svg-Wikibooks-logo_sister{background-position:0 -126px;width:37px;height:37px}.svg-Wikidata-logo_sister{background-position:0 -163px;width:49px;height:49px}.svg-Wikifunctions-logo_sister{background-position:0 -212px;width:50px;height:50px}.svg-Wikimedia-logo_black{background-position:0 -262px;width:42px;height:42px}.svg-Wikipedia_wordmark{background-position:0 -304px;width:176px;height:32px}.svg-Wikiquote-logo_sister{background-position:0 -336px;width:42px;height:42px}.svg-Wikisource-logo_sister{background-position:0 -378px;width:39px;height:39px}.svg-Wikispecies-logo_sister{background-position:0 -417px;width:42px;height:42px}.svg-Wikiversity-logo_sister{background-position:0 -459px;width:43px;height:37px}.svg-Wikivoyage-logo_sister{background-position:0 -496px;width:36px;height:36px}.svg-Wiktionary-logo_sister{background-position:0 -532px;width:37px;height:37px}.svg-arrow-down{background-position:0 -569px;width:12px;height:8px}.svg-arrow-down-blue{background-position:0 -577px;width:14px;height:14px}.svg-badge_google_play_store{background-position:0 -591px;width:124px;height:38px}.svg-badge_ios_app_store{background-position:0 -629px;width:110px;height:38px}.svg-language-icon{background-position:0 -667px;width:22px;height:22px}.svg-noimage{background-position:0 -689px;width:58px;height:58px}.svg-search-icon{background-position:0 -747px;width:22px;height:22px}.svg-wikipedia_app_tile{background-position:0 -769px;width:42px;height:42px}
</style>
<style>
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:62.5%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:32px;font-size:3.2rem;margin:1.2rem 0}mark{background:#fef6e7;color:#101418}small{font-size:13px;font-size:1.3rem}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1.6rem 4rem}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:14px;font-size:1.4rem}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=search]:focus{outline-offset:-2px}fieldset{border:1px solid #a2a9b1;margin:0 .2rem;padding:.6rem 1rem 1.2rem}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.hidden,[hidden]{display:none!important}.screen-reader-text{display:block;position:absolute!important;clip:rect(1px,1px,1px,1px);width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}body{background-color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,Helvetica,Arial,sans-serif;font-size:14px;font-size:1.4rem;line-height:1.5;margin:.4rem 0 1.6rem}main{padding:0 1.28rem}a{-ms-touch-action:manipulation;touch-action:manipulation}a,a:active,a:focus{unicode-bidi:embed;outline:0;color:#36c;text-decoration:none}a:focus{outline:1px solid #36c}a:hover{text-decoration:underline}img{vertical-align:middle}hr,img{border:0}hr{clear:both;height:0;border-bottom:1px solid #c8ccd1;margin:.26rem 0}.pure-button{display:inline-block;zoom:1;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#f8f9fa;color:#202122;position:relative;min-height:19.2px;min-height:1.92rem;min-width:16px;min-width:1.6rem;margin:.16rem 0;border:1px solid #a2a9b1;-moz-border-radius:2px;border-radius:2px;padding:.8rem 1.6rem;font-family:inherit;font-size:inherit;font-weight:700;text-decoration:none;vertical-align:top;-webkit-transition:background .1s ease,color .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease;transition:background .1s ease,color .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease;-o-transition:background .1s ease,color .1s ease,border-color .1s ease,box-shadow .1s ease;-moz-transition:background .1s ease,color .1s ease,border-color .1s ease,box-shadow .1s ease,-moz-box-shadow .1s ease;transition:background .1s ease,color .1s ease,border-color .1s ease,box-shadow .1s ease;transition:background .1s ease,color .1s ease,border-color .1s ease,box-shadow .1s ease,-webkit-box-shadow .1s ease,-moz-box-shadow .1s ease}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-hover,.pure-button:hover{background-color:#fff;border-color:#a2a9b1;color:#404244}.pure-button-active,.pure-button:active{background-color:#eaecf0;border-color:#72777d;color:#101418}.pure-button:focus{outline:1px solid transparent;border-color:#36c;-webkit-box-shadow:inset 0 0 0 1px #36c;-moz-box-shadow:inset 0 0 0 1px #36c;box-shadow:inset 0 0 0 1px #36c}.pure-button-primary-progressive{background-color:#36c;border-color:#6485d1;color:#fff}.pure-button-primary-progressive:hover{background:#3056a9;border-color:#3056a9}.pure-button-primary-progressive:active{background-color:#233566;border-color:#233566;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;color:#fff}.pure-button-primary-progressive:focus{-webkit-box-shadow:inset 0 0 0 1px #36c,inset 0 0 0 2px #fff;-moz-box-shadow:inset 0 0 0 1px #36c,inset 0 0 0 2px #fff;box-shadow:inset 0 0 0 1px #36c,inset 0 0 0 2px #fff;border-color:#36c}.pure-form input[type=search]{background-color:#fff;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #a2a9b1;-moz-border-radius:2px;border-radius:2px;padding:.8rem;-webkit-box-shadow:inset 0 0 0 1px #fff;-moz-box-shadow:inset 0 0 0 1px #fff;box-shadow:inset 0 0 0 1px #fff;vertical-align:middle}.pure-form input:focus:invalid{color:#bf3c2c;border-color:#f54739}.pure-form fieldset{margin:0;padding:.56rem 0 1.2rem;border:0}@media only screen and (max-width:480px){.pure-form input[type=search]{display:block}}.central-textlogo-wrapper{display:inline-block;vertical-align:bottom}.central-textlogo{position:relative;margin:4rem auto .5rem;width:270px;font-family:Linux Libertine,Hoefler Text,Georgia,Times New Roman,Times,serif;font-size:30px;font-size:3rem;font-weight:400;line-height:33px;line-height:3.3rem;text-align:center;-moz-font-feature-settings:"ss05=1";-moz-font-feature-settings:"ss05";-webkit-font-feature-settings:"ss05";-ms-font-feature-settings:"ss05";font-feature-settings:"ss05"}.localized-slogan{display:block;font-family:Linux Libertine,Georgia,Times,"Source Serif Pro",serif;font-size:15px;font-size:1.5rem;font-weight:400}.central-textlogo__image{color:transparent;display:inline-block;overflow:hidden;text-indent:-10000px}.central-featured-logo{position:absolute;top:158px;left:35px}@media (max-width:480px){.central-textlogo{position:relative;height:70px;width:auto;margin:2rem 0 0;text-align:center;line-height:25px;line-height:2.5rem;text-indent:-10px;text-indent:-1rem;font-size:1em}.central-textlogo-wrapper{position:relative;top:12px;text-indent:2px;text-indent:.2rem}.svg-Wikipedia_wordmark{width:150px;height:25px;background-position:0 -260px;-webkit-background-size:100% 100%;-moz-background-size:100%;background-size:100%}.localized-slogan{font-size:14px;font-size:1.4rem}.central-featured-logo{position:relative;display:inline-block;width:57px;height:auto;left:0;top:0}}@media (max-width:240px){.central-textlogo__image{height:auto}}.central-featured{position:relative;height:325px;height:32.5rem;width:546px;width:54.6rem;max-width:100%;margin:0 auto;text-align:center;vertical-align:middle}.central-featured-lang{position:absolute;width:156px;width:15.6rem}.central-featured-lang .link-box{display:block;padding:0;text-decoration:none;white-space:normal}.central-featured-lang .link-box:hover strong{text-decoration:underline}.central-featured-lang :hover{background-color:#eaecf0}.central-featured-lang strong{display:block;font-size:16px;font-size:1.6rem}.central-featured-lang small{color:#54595d;display:inline-block;font-size:13px;font-size:1.3rem;line-height:1.6}.central-featured-lang em{font-style:italic}.central-featured-lang .emNonItalicLang{font-style:normal}.lang1{top:0;right:60%}.lang2{top:0;left:60%}.lang3{top:20%;right:70%}.lang4{top:20%;left:70%}.lang5{top:40%;right:72%}.lang6{top:40%;left:72%}.lang7{top:60%;right:70%}.lang8{top:60%;left:70%}.lang9{top:80%;right:60%}.lang10{top:80%;left:60%}@media (max-width:480px){.central-featured{width:auto;height:auto;margin-top:8rem;font-size:13px;font-size:1.3rem;text-align:left}.central-featured:after{content:" ";display:block;visibility:hidden;clear:both;height:0;font-size:0}.central-featured-lang{display:block;float:left;position:relative;top:auto;left:auto;right:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:64px;height:6.4rem;width:33%;margin:0 0 16px;padding:0 1.6rem;font-size:14px;font-size:1.4rem;text-align:center}.central-featured-lang strong{font-size:14px;font-size:1.4rem;margin-bottom:4px}.central-featured-lang small{line-height:1.4}}@media (max-width:375px){.central-featured-lang{font-size:13px;font-size:1.3rem}}@media (max-width:240px){.central-featured-lang{width:100%}}.search-container{float:none;max-width:95%;width:540px;margin:.4rem auto 1.95rem;text-align:center;vertical-align:middle}.search-container fieldset{word-spacing:-4px}.search-container button{min-height:44px;min-height:4.4rem;margin:0;-moz-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;padding:.8rem 1.6rem;font-size:16px;font-size:1.6rem;z-index:2}.search-container button .svg-search-icon{text-indent:-9999px}.search-container input[type=search]::-webkit-search-results-button,.search-container input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.search-container input::-webkit-calendar-picker-indicator{display:none}.search-container .sprite.svg-arrow-down{position:absolute;top:8px;top:.8rem;right:6px;right:.6rem}#searchInput{-webkit-appearance:none;width:100%;height:44px;height:4.4rem;border-width:1px 0 1px 1px;-moz-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px;padding:.8rem 9.6rem .8rem 1.2rem;font-size:16px;font-size:1.6rem;line-height:1.6;-webkit-transition:background .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease;transition:background .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease;-o-transition:background .1s ease,border-color .1s ease,box-shadow .1s ease;-moz-transition:background .1s ease,border-color .1s ease,box-shadow .1s ease,-moz-box-shadow .1s ease;transition:background .1s ease,border-color .1s ease,box-shadow .1s ease;transition:background .1s ease,border-color .1s ease,box-shadow .1s ease,-webkit-box-shadow .1s ease,-moz-box-shadow .1s ease}#searchInput:hover{border-color:#72777d}#searchInput:focus{border-color:#6485d1;-webkit-box-shadow:inset 0 0 0 1px #36c;-moz-box-shadow:inset 0 0 0 1px #36c;box-shadow:inset 0 0 0 1px #36c;outline:1px solid transparent}.search-container .search-input{display:inline-block;position:relative;width:73%;vertical-align:top}@media only screen and (max-width:480px){.search-container .pure-form fieldset{margin-left:1rem;margin-right:6.6rem}.search-container .search-input{width:100%;margin-right:-6.6rem}.search-container .pure-form button{float:right;right:-56px;right:-5.6rem}}.suggestions-dropdown{background-color:#fff;display:inline-block;position:absolute;left:0;z-index:2;margin:0;padding:0;border:1px solid #a2a9b1;border-top:0;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.2);-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.2);list-style-type:none;word-spacing:normal}.suggestion-link,.suggestions-dropdown{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;text-align:left}.suggestion-link{display:block;position:relative;min-height:70px;min-height:7rem;padding:1rem 1rem 1rem 8.5rem;border-bottom:1px solid #eaecf0;color:inherit;text-decoration:none;text-align:initial;white-space:normal}.suggestion-link.active{background-color:#f1f4fd}a.suggestion-link:hover{text-decoration:none}a.suggestion-link:active,a.suggestion-link:focus{outline:0;white-space:normal}.suggestion-thumbnail{background-color:#eaecf0;background-image:url(portal/wikipedia.org/assets/img/noimage.png);background-image:-webkit-linear-gradient(transparent,transparent),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56 56'%3E%3Cpath fill='%23eee' d='M0 0h56v56H0z'/%3E%3Cpath fill='%23999' d='M36.4 13.5H17.8v24.9c0 1.4.9 2.3 2.3 2.3h18.7v-25c.1-1.4-1-2.2-2.4-2.2zM30.2 17h5.1v6.4h-5.1V17zm-8.8 0h6v1.8h-6V17zm0 4.6h6v1.8h-6v-1.8zm0 15.5v-1.8h13.8v1.8H21.4zm13.8-4.5H21.4v-1.8h13.8v1.8zm0-4.7H21.4v-1.8h13.8v1.8z'/%3E%3C/svg%3E");background-image:-webkit-linear-gradient(transparent,transparent),url(portal/wikipedia.org/assets/img/noimage.svg) !ie;background-image:-webkit-gradient(linear,left top,left bottom,from(transparent),to(transparent)),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56 56'%3E%3Cpath fill='%23eee' d='M0 0h56v56H0z'/%3E%3Cpath fill='%23999' d='M36.4 13.5H17.8v24.9c0 1.4.9 2.3 2.3 2.3h18.7v-25c.1-1.4-1-2.2-2.4-2.2zM30.2 17h5.1v6.4h-5.1V17zm-8.8 0h6v1.8h-6V17zm0 4.6h6v1.8h-6v-1.8zm0 15.5v-1.8h13.8v1.8H21.4zm13.8-4.5H21.4v-1.8h13.8v1.8zm0-4.7H21.4v-1.8h13.8v1.8z'/%3E%3C/svg%3E");background-image:-moz- oldlinear-gradient(transparent,transparent),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56 56'%3E%3Cpath fill='%23eee' d='M0 0h56v56H0z'/%3E%3Cpath fill='%23999' d='M36.4 13.5H17.8v24.9c0 1.4.9 2.3 2.3 2.3h18.7v-25c.1-1.4-1-2.2-2.4-2.2zM30.2 17h5.1v6.4h-5.1V17zm-8.8 0h6v1.8h-6V17zm0 4.6h6v1.8h-6v-1.8zm0 15.5v-1.8h13.8v1.8H21.4zm13.8-4.5H21.4v-1.8h13.8v1.8zm0-4.7H21.4v-1.8h13.8v1.8z'/%3E%3C/svg%3E");background-image:-o-linear-gradient(transparent,transparent),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56 56'%3E%3Cpath fill='%23eee' d='M0 0h56v56H0z'/%3E%3Cpath fill='%23999' d='M36.4 13.5H17.8v24.9c0 1.4.9 2.3 2.3 2.3h18.7v-25c.1-1.4-1-2.2-2.4-2.2zM30.2 17h5.1v6.4h-5.1V17zm-8.8 0h6v1.8h-6V17zm0 4.6h6v1.8h-6v-1.8zm0 15.5v-1.8h13.8v1.8H21.4zm13.8-4.5H21.4v-1.8h13.8v1.8zm0-4.7H21.4v-1.8h13.8v1.8z'/%3E%3C/svg%3E");background-image:linear-gradient(transparent,transparent),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56 56'%3E%3Cpath fill='%23eee' d='M0 0h56v56H0z'/%3E%3Cpath fill='%23999' d='M36.4 13.5H17.8v24.9c0 1.4.9 2.3 2.3 2.3h18.7v-25c.1-1.4-1-2.2-2.4-2.2zM30.2 17h5.1v6.4h-5.1V17zm-8.8 0h6v1.8h-6V17zm0 4.6h6v1.8h-6v-1.8zm0 15.5v-1.8h13.8v1.8H21.4zm13.8-4.5H21.4v-1.8h13.8v1.8zm0-4.7H21.4v-1.8h13.8v1.8z'/%3E%3C/svg%3E");background-image:-webkit-gradient(linear,left top,left bottom,from(transparent),to(transparent)),url(portal/wikipedia.org/assets/img/noimage.svg) !ie;background-image:-moz- oldlinear-gradient(transparent,transparent),url(portal/wikipedia.org/assets/img/noimage.svg) !ie;background-image:-o-linear-gradient(transparent,transparent),url(portal/wikipedia.org/assets/img/noimage.svg) !ie;background-image:linear-gradient(transparent,transparent),url(portal/wikipedia.org/assets/img/noimage.svg) !ie;background-image:-o-linear-gradient(transparent,transparent),url(portal/wikipedia.org/assets/img/noimage.png);background-position:50%;background-repeat:no-repeat;-webkit-background-size:100% auto;-moz-background-size:100% auto;background-size:100% auto;-webkit-background-size:cover;-moz-background-size:cover;background-size:cover;height:100%;width:70px;width:7rem;position:absolute;top:0;left:0}.suggestion-title{margin:0 0 .78rem;color:#54595d;font-size:16px;font-size:1.6rem;line-height:18.72px;line-height:1.872rem}.suggestion-link.active .suggestion-title{color:#36c}.suggestion-highlight{font-style:normal;text-decoration:underline}.suggestion-description{color:#72777d;margin:0;font-size:13px;font-size:1.3rem;line-height:14.299px;line-height:1.43rem}.styled-select{display:none;position:absolute;top:10px;top:1rem;bottom:12px;bottom:1.2rem;right:12px;right:1.2rem;max-width:95px;max-width:9.5rem;height:24px;height:2.4rem;-moz-border-radius:2px;border-radius:2px}.styled-select:hover{background-color:#f8f9fa}.styled-select .hide-arrow{right:32px;right:3.2rem;max-width:68px;max-width:6.8rem;height:24px;height:2.4rem;overflow:hidden;text-align:right}.styled-select select{background:transparent;display:inline;overflow:hidden;height:24px;height:2.4rem;min-width:110px;min-width:11rem;max-width:110px;max-width:11rem;width:110px;width:11rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:0;line-height:24px;line-height:2.4rem;-webkit-appearance:none;-moz-appearance:window;text-indent:.01px;-o-text-overflow:"";text-overflow:"";opacity:0;-moz-appearance:none;appearance:none;cursor:pointer}.styled-select.no-js{width:95px;width:9.5rem}.styled-select.no-js select{opacity:1;margin:0;padding:0 2.4rem 0 .8rem;color:#54595d}.styled-select.no-js .hide-arrow{width:68px;width:6.8rem}.search-container .styled-select.no-js .js-langpicker-label{display:none}.styled-select.js-enabled .hide-arrow{padding:0 2.4rem 0 .8rem}.styled-select.js-enabled select{background:transparent;position:absolute;top:0;left:0;height:100%;z-index:1;width:100%;border:0;margin:0;padding:0 2.4rem;color:transparent;color:hsla(0,0%,100%,0)}.styled-select.js-enabled select option{color:#54595d}.styled-select.js-enabled select:hover{background-color:transparent}.styled-select-active-helper{display:none}.styled-select.js-enabled select:focus+.styled-select-active-helper{display:block;position:absolute;top:0;left:0;z-index:0;width:100%;height:100%;outline:1px solid #36c}.search-container .js-langpicker-label{display:inline-block;margin:0;color:#54595d;font-size:13px;font-size:1.3rem;line-height:24px;line-height:2.4rem;text-transform:uppercase}.styled-select select:hover{background-color:#f8f9fa}.styled-select select::-ms-expand{display:none}.styled-select select:focus{outline:1px solid transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}@-moz-document url-prefix(){.styled-select select{width:110%}}.other-projects{display:inline-block;width:65%}.other-project{float:left;position:relative;width:33%;height:90px;height:9rem}.other-project-link{display:inline-block;min-height:50px;width:90%;padding:1em;white-space:nowrap}.other-project-link:hover{background-color:#eaecf0}a.other-project-link{text-decoration:none}.other-project-icon{display:inline-block;width:50px;text-align:center}.svg-Wikinews-logo_sister{background-image:url(portal/wikipedia.org/assets/img/Wikinews-logo_sister.png);background-position:0 0;-webkit-background-size:47px 26px;-moz-background-size:47px 26px;background-size:47px 26px;width:47px;height:26px}@media (-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.svg-Wikinews-logo_sister{background-image:url(portal/wikipedia.org/assets/img/[email protected])}}.other-project-text,.other-project .sprite-project-logos{display:inline-block}.other-project-text{max-width:65%;font-size:14px;font-size:1.4rem;vertical-align:middle;white-space:normal}.other-project-tagline,.other-project-title{display:block}.other-project-tagline{color:#54595d;font-size:13px;font-size:1.3rem}@media screen and (max-width:768px){.other-projects{width:100%}.other-project{width:33%}}@media screen and (max-width:480px){.other-project{width:50%}.other-project-tagline{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}}@media screen and (max-width:320px){.other-project-text{margin-right:5px;font-size:13px;font-size:1.3rem}}.lang-list-container{background-color:#f8f9fa;overflow:hidden;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:0;width:80%;margin:-1.6rem auto 4.8rem;-webkit-transition:max-height .5s ease-out .16s,visibility .5s ease-in 1s;-o-transition:max-height .5s ease-out .16s,visibility .5s ease-in 1s;-moz-transition:max-height .5s ease-out .16s,visibility .5s ease-in 1s;transition:max-height .5s ease-out .16s,visibility .5s ease-in 1s}.js-enabled .lang-list-container{visibility:hidden}.lang-list-active .lang-list-container,.no-js .lang-list-container{visibility:visible;max-height:10000px;-webkit-transition:max-height 1s ease-in .2s,visibility 1000s ease-in 0ms;-o-transition:max-height 1s ease-in .2s,visibility 1000s ease-in 0ms;-moz-transition:max-height 1s ease-in .2s,visibility 1000s ease-in 0ms;transition:max-height 1s ease-in .2s,visibility 1000s ease-in 0ms}.no-js .lang-list-button{display:none}.lang-list-button-wrapper{text-align:center}.lang-list-button{background-color:#f8f9fa;display:inline;position:relative;z-index:1;margin:0 auto;padding:.6rem 1.2rem;outline:16px solid #fff;outline:1.6rem solid #fff;border:1px solid #a2a9b1;-moz-border-radius:2px;border-radius:2px;color:#36c;font-size:14px;font-size:1.4rem;font-weight:700;line-height:1;-webkit-transition:outline-width .1s ease-in .5s;-o-transition:outline-width .1s ease-in .5s;-moz-transition:outline-width .1s ease-in .5s;transition:outline-width .1s ease-in .5s}.lang-list-button:hover{background-color:#fff;border-color:#a2a9b1}.lang-list-button:focus{border-color:#36c;-webkit-box-shadow:inset 0 0 0 1px #36c;-moz-box-shadow:inset 0 0 0 1px #36c;box-shadow:inset 0 0 0 1px #36c}.lang-list-active .lang-list-button{background-color:#fff;outline:1px solid #fff;border-color:#72777d;-webkit-transition-delay:0s;-moz-transition-delay:0s;-o-transition-delay:0s;transition-delay:0s}.lang-list-button-text{padding:0 .64rem;vertical-align:middle}.lang-list-button i{display:inline-block;vertical-align:middle}.no-js .lang-list-border,.no-js .lang-list-button{display:none}.lang-list-border{background-color:#c8ccd1;display:block;position:relative;max-width:460px;width:80%;margin:-1.6rem auto 1.6rem;height:1px;-webkit-transition:max-width .2s ease-out .4s;-o-transition:max-width .2s ease-out .4s;-moz-transition:max-width .2s ease-out .4s;transition:max-width .2s ease-out .4s}.lang-list-active .lang-list-border{max-width:85%;-webkit-transition-delay:0s;-moz-transition-delay:0s;-o-transition-delay:0s;transition-delay:0s}.no-js .lang-list-content{padding:0}.lang-list-content{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;padding:1.6rem 1.6rem 0}.svg-arrow-down-blue{-webkit-transition:-webkit-transform .2s ease-out;transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;-moz-transition:transform .2s ease-out,-moz-transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out,-webkit-transform .2s ease-out,-moz-transform .2s ease-out}.lang-list-active .svg-arrow-down-blue{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.langlist{width:auto;margin:1.6rem 0;text-align:left}.langlist-others{font-weight:700;text-align:center}.hlist ul{margin:0;padding:0}.hlist li,.hlist ul ul{display:inline}.hlist li:before{content:" · ";font-weight:700}.hlist li:first-child:before{content:none}.hlist li>ul:before{content:"\00a0("}.hlist li>ul:after{content:") "}.langlist>ul{-webkit-column-width:11.2rem;-moz-column-width:11.2rem;column-width:11.2rem}.langlist>ul>li{display:block;line-height:1.7;-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid}.no-js .langlist>ul{text-align:center;list-style-type:circle}.no-js .langlist>ul>li{display:inline-block;padding:0 .8rem}.langlist>ul>li:before{content:none}.langlist>ul>li a{white-space:normal}@media (max-width:480px){.langlist{font-size:inherit}.langlist a{word-wrap:break-word;white-space:normal}.lang-list-container{width:auto;margin-left:.8rem;margin-right:.8rem}.bookshelf{overflow:visible}}.bookshelf{display:block;border-top:1px solid #c8ccd1;-webkit-box-shadow:0 -1px 0 #fff;-moz-box-shadow:0 -1px 0 #fff;box-shadow:0 -1px 0 #fff;text-align:center;white-space:nowrap}.bookshelf .text{background-color:#f8f9fa;position:relative;top:-11.2px;top:-1.12rem;font-weight:400;padding:0 .8rem}.bookshelf-container{display:block;overflow:visible;width:100%;height:1px;margin:2.4rem 0 1.6rem;font-size:13px;font-size:1.3rem;font-weight:700;line-height:1.5}@media (max-width:480px){.bookshelf{width:auto;left:auto}.bookshelf-container{text-align:left;width:auto}}.app-badges .footer-sidebar-content{background-color:#f8f9fa}.app-badges .footer-sidebar-text{padding-top:.8rem;padding-bottom:.8rem}.app-badges .sprite.footer-sidebar-icon{top:8px;top:.8rem}.app-badges ul{margin:0;padding:0;list-style-type:none}.app-badge{display:inline-block}.app-badge a{color:transparent}@media screen and (max-width:768px){.app-badges .footer-sidebar-content{text-align:center}.app-badges .sprite.footer-sidebar-icon{display:inline-block;position:relative;margin:0;top:-3px;left:0;vertical-align:middle;-webkit-transform:scale(.7);-moz-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}.footer{overflow:hidden;max-width:100%;margin:0 auto;padding:4.16rem 1.28rem 0;font-size:13px;font-size:1.3rem}.footer:after,.footer:before{content:" ";display:table}.footer:after{clear:both}.footer-sidebar{width:35%;float:left;clear:left;margin-bottom:3.2rem;vertical-align:top}.footer-sidebar-content{position:relative;max-width:350px;margin:0 auto}.sprite.footer-sidebar-icon{position:absolute;top:0;left:8px;left:.8rem}.footer-sidebar-text{position:relative;margin:0;padding-left:6rem;padding-right:2rem;color:#54595d}.site-license{color:#54595d;text-align:center}.site-license small:after{content:"\2022";display:inline-block;font-size:13px;font-size:1.3rem;line-height:inherit;margin-left:.8rem;margin-right:.5rem}.site-license small:last-child:after{display:none}.footer hr{margin-top:1.28rem}@media screen and (max-width:768px){.footer{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-moz-box-orient:vertical;-moz-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-top:1.28rem}.footer .footer-sidebar{-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-webkit-order:1;-ms-flex-order:1;order:1}.footer .other-projects{-webkit-box-ordinal-group:2;-moz-box-ordinal-group:2;-webkit-order:2;-ms-flex-order:2;order:2}.footer .app-badges{-webkit-box-ordinal-group:3;-moz-box-ordinal-group:3;-webkit-order:3;-ms-flex-order:3;order:3}.footer hr{-webkit-box-ordinal-group:4;-moz-box-ordinal-group:4;-webkit-order:4;-ms-flex-order:4;order:4}.footer .site-license{-webkit-box-ordinal-group:5;-moz-box-ordinal-group:5;-webkit-order:5;-ms-flex-order:5;order:5}.footer-sidebar{width:100%}.sprite.footer-sidebar-icon{display:block;position:relative;left:0;margin:0 auto 1.28rem}.footer-sidebar-content{max-width:none}.footer-sidebar-text{margin:0;padding:0;text-align:center}}@media screen and (max-width:480px){.footer{padding:.96rem .64rem 1.28rem}}@media (max-width:480px){.search-container{margin-top:0;height:78px;height:7.8rem;position:absolute;top:96px;top:9.6rem;left:0;right:0;max-width:100%;width:auto;padding:0;text-align:left}.search-container label{display:none}.search-form #searchInput{max-width:40%;vertical-align:middle}.search-form .formBtn{max-width:25%;vertical-align:middle}form fieldset{margin:0;border-left:0;border-right:0}hr{margin-top:.65rem}}@media (-o-min-device-pixel-ratio:2/1),(-webkit-min-device-pixel-ratio:2),(min--moz-device-pixel-ratio:2),(min-resolution:2dppx),(min-resolution:192dpi){hr{border-bottom-width:.5px}}@supports (-webkit-marquee-style:slide){hr{border-bottom-width:1px}}.js-enabled .central-featured,.js-enabled .jsl10n{opacity:0}.jsl10n-visible .central-featured,.jsl10n-visible .jsl10n{opacity:1}@media print{body{background-color:transparent}a{color:#000!important;background:none!important;padding:0!important}a:link,a:visited{color:#520;background:transparent}img{border:0}}
</style>
<link rel="preconnect" href="//upload.wikimedia.org">
<link rel="me" href="https://wikis.world/@wikipedia">
<meta property="og:url" content>
<meta property="og:title" content="Wikipedia, the free encyclopedia">
<meta property="og:type" content="website">
<meta property="og:description" content="Wikipedia is a free online encyclopedia, created and edited by volunteers around the world and hosted by the Wikimedia Foundation.">
<meta property="og:image" content="https://upload.wikimedia.org/wikipedia/en/thumb/8/80/Wikipedia-logo-v2.svg/2244px-Wikipedia-logo-v2.svg.png">
</head>
<body id="www-wikipedia-org">
<main>
<div class="central-textlogo">
<img class="central-featured-logo" src="portal/wikipedia.org/assets/img/Wikipedia-logo-v2.png" srcset="portal/wikipedia.org/assets/img/[email protected] 1.5x, portal/wikipedia.org/assets/img/[email protected] 2x" width="200" height="183" alt>
<h1 class="central-textlogo-wrapper">
<span class="central-textlogo__image sprite svg-Wikipedia_wordmark">
Wikipedia
</span>
<strong class="jsl10n localized-slogan" data-jsl10n="portal.slogan">The Free Encyclopedia</strong>
</h1>
</div>
<nav data-jsl10n="top-ten-nav-label" aria-label="Top languages" class="central-featured" data-el-section="primary links">
<!-- #1. en.wikipedia.org - 1,803,172,000 views/day -->
<div class="central-featured-lang lang1" lang="en" dir="ltr">
<a id="js-link-box-en" href="//en.wikipedia.org/" title="English — Wikipedia — The Free Encyclopedia" class="link-box" data-slogan="The Free Encyclopedia">
<strong>English</strong>
<small>6,942,000+ <span>articles</span></small>
</a>
</div>
<!-- #2. ja.wikipedia.org - 223,982,000 views/day -->
<div class="central-featured-lang lang2" lang="ja" dir="ltr">
<a id="js-link-box-ja" href="//ja.wikipedia.org/" title="Nihongo — ウィキペディア — フリー百科事典" class="link-box" data-slogan="フリー百科事典">
<strong>日本語</strong>
<small>1,445,000+ <span>記事</span></small>
</a>
</div>
<!-- #3. ru.wikipedia.org - 222,257,000 views/day -->
<div class="central-featured-lang lang3" lang="ru" dir="ltr">
<a id="js-link-box-ru" href="//ru.wikipedia.org/" title="Russkiy — Википедия — Свободная энциклопедия" class="link-box" data-slogan="Свободная энциклопедия">
<strong>Русский</strong>
<small>2 020 000+ <span>статей</span></small>
</a>
</div>
<!-- #4. de.wikipedia.org - 196,822,000 views/day -->
<div class="central-featured-lang lang4" lang="de" dir="ltr">
<a id="js-link-box-de" href="//de.wikipedia.org/" title="Deutsch — Wikipedia — Die freie Enzyklopädie" class="link-box" data-slogan="Die freie Enzyklopädie">
<strong>Deutsch</strong>
<small>2.979.000+ <span>Artikel</span></small>
</a>
</div>
<!-- #5. es.wikipedia.org - 172,057,000 views/day -->
<div class="central-featured-lang lang5" lang="es" dir="ltr">
<a id="js-link-box-es" href="//es.wikipedia.org/" title="Español — Wikipedia — La enciclopedia libre" class="link-box" data-slogan="La enciclopedia libre">
<strong>Español</strong>
<small>2.003.000+ <span>artículos</span></small>
</a>
</div>
<!-- #6. fr.wikipedia.org - 170,275,000 views/day -->
<div class="central-featured-lang lang6" lang="fr" dir="ltr">
<a id="js-link-box-fr" href="//fr.wikipedia.org/" title="Français — Wikipédia — L’encyclopédie libre" class="link-box" data-slogan="L’encyclopédie libre">
<strong>Français</strong>
<small>2 659 000+ <span>articles</span></small>
</a>
</div>
<!-- #7. it.wikipedia.org - 116,527,000 views/day -->
<div class="central-featured-lang lang7" lang="it" dir="ltr">
<a id="js-link-box-it" href="//it.wikipedia.org/" title="Italiano — Wikipedia — L&#x27;enciclopedia libera" class="link-box" data-slogan="L&#x27;enciclopedia libera">
<strong>Italiano</strong>
<small>1.900.000+ <span>voci</span></small>
</a>
</div>
<!-- #8. zh.wikipedia.org - 98,932,000 views/day -->
<div class="central-featured-lang lang8" lang="zh" dir="ltr">
<a id="js-link-box-zh" href="//zh.wikipedia.org/" title="Zhōngwén — 维基百科 / 維基百科 — 自由的百科全书 / 自由的百科全書" class="link-box localize-variant" data-slogan="自由的百科全书 / 自由的百科全書">
<strong>中文</strong>
<small>1,459,000+ <span>条目 / 條目</span></small>
</a>
</div>
<!-- #9. fa.wikipedia.org - 57,736,000 views/day -->
<div class="central-featured-lang lang9" lang="fa" dir="rtl">
<a id="js-link-box-fa" href="//fa.wikipedia.org/" title="Fārsi — ویکی‌پدیا — دانشنامهٔ آزاد" class="link-box" data-slogan="دانشنامهٔ آزاد">
<strong><bdi dir="rtl">فارسی</bdi></strong>
<small>۱٬۰۲۶٬۰۰۰+ <span>مقاله</span></small>
</a>
</div>
<!-- #10. pl.wikipedia.org - 55,649,000 views/day -->
<div class="central-featured-lang lang10" lang="pl" dir="ltr">
<a id="js-link-box-pl" href="//pl.wikipedia.org/" title="Polski — Wikipedia — Wolna encyklopedia" class="link-box" data-slogan="Wolna encyklopedia">
<strong>Polski</strong>
<small>1 645 000+ <span>haseł</span></small>
</a>
</div>
</nav>
<div role="search" class="search-container">
<form class="pure-form" id="search-form" action="//www.wikipedia.org/search-redirect.php" data-el-section="search">
<fieldset>
<input type="hidden" name="family" value="Wikipedia">
<input type="hidden" id="hiddenLanguageInput" name="language" value="en">
<div class="search-input" id="search-input">
<label for="searchInput" class="screen-reader-text" data-jsl10n="portal.search-input-label">Search Wikipedia</label>
<input id="searchInput" name="search" type="search" size="20" autofocus="autofocus" accesskey="F" dir="auto" autocomplete="off">
<div class="styled-select no-js">
<div class="hide-arrow">
<select id="searchLanguage" name="language">
<option value="af" lang="af">Afrikaans</option>
<option value="ar" lang="ar">العربية</option><!-- Al-ʿArabīyah -->
<option value="ast" lang="ast">Asturianu</option>
<option value="az" lang="az">Azərbaycanca</option>
<option value="bg" lang="bg">Български</option><!-- Bǎlgarski -->
<option value="nan" lang="nan">閩南語 / Bân-lâm-gú</option><!-- Bân-lâm-gú -->
<option value="bn" lang="bn">বাংলা</option><!-- Bangla -->
<option value="be" lang="be">Беларуская</option><!-- Belaruskaya -->
<option value="ca" lang="ca">Català</option>
<option value="cs" lang="cs">Čeština</option>
<option value="cy" lang="cy">Cymraeg</option>
<option value="da" lang="da">Dansk</option>
<option value="de" lang="de">Deutsch</option>
<option value="et" lang="et">Eesti</option>
<option value="el" lang="el">Ελληνικά</option><!-- Ellīniká -->
<option value="en" lang="en" selected=selected>English</option><!-- English -->
<option value="es" lang="es">Español</option>
<option value="eo" lang="eo">Esperanto</option>
<option value="eu" lang="eu">Euskara</option>
<option value="fa" lang="fa">فارسی</option><!-- Fārsi -->
<option value="fr" lang="fr">Français</option>
<option value="gl" lang="gl">Galego</option><!-- Galego -->
<option value="ko" lang="ko">한국어</option><!-- Hangugeo -->
<option value="hy" lang="hy">Հայերեն</option><!-- Hayeren -->
<option value="hi" lang="hi">हिन्दी</option><!-- Hindī -->
<option value="hr" lang="hr">Hrvatski</option>
<option value="id" lang="id">Bahasa Indonesia</option>
<option value="it" lang="it">Italiano</option>
<option value="he" lang="he">עברית</option><!-- Ivrit -->
<option value="ka" lang="ka">ქართული</option><!-- Kartuli -->
<option value="lld" lang="lld">Ladin</option>
<option value="la" lang="la">Latina</option>
<option value="lv" lang="lv">Latviešu</option>
<option value="lt" lang="lt">Lietuvių</option>
<option value="hu" lang="hu">Magyar</option>
<option value="mk" lang="mk">Македонски</option><!-- Makedonski -->
<option value="arz" lang="arz">مصرى</option><!-- Maṣrī -->
<option value="ms" lang="ms">Bahasa Melayu</option><!-- Bahasa Melayu -->
<option value="min" lang="min">Bahaso Minangkabau</option>
<option value="my" lang="my">မြန်မာဘာသာ</option><!-- Myanmarsar -->
<option value="nl" lang="nl">Nederlands</option>
<option value="ja" lang="ja">日本語</option><!-- Nihongo -->
<option value="no" lang="nb">Norsk (bokmål)</option>
<option value="nn" lang="nn">Norsk (nynorsk)</option>
<option value="ce" lang="ce">Нохчийн</option><!-- Noxçiyn -->
<option value="uz" lang="uz">Oʻzbekcha / Ўзбекча</option>
<option value="pl" lang="pl">Polski</option>
<option value="pt" lang="pt">Português</option>
<option value="kk" lang="kk">Қазақша / Qazaqşa / قازاقشا</option>
<option value="ro" lang="ro">Română</option>
<option value="sq" lang="sq">Shqip</option>
<option value="simple" lang="en">Simple English</option>
<option value="ceb" lang="ceb">Sinugboanong Binisaya</option>
<option value="sk" lang="sk">Slovenčina</option>
<option value="sl" lang="sl">Slovenščina</option><!-- Slovenščina -->
<option value="sr" lang="sr">Српски / Srpski</option>
<option value="sh" lang="sh">Srpskohrvatski / Српскохрватски</option>
<option value="fi" lang="fi">Suomi</option>
<option value="sv" lang="sv">Svenska</option>
<option value="ta" lang="ta">தமிழ்</option><!-- Tamiḻ -->
<option value="tt" lang="tt">Татарча / Tatarça</option>
<option value="te" lang="te">తెలుగు</option><!-- Telugu -->
<option value="th" lang="th">ภาษาไทย</option><!-- Phasa Thai -->
<option value="tg" lang="tg">Тоҷикӣ</option><!-- Tojikī -->
<option value="azb" lang="azb">تۆرکجه</option><!-- Türkce -->
<option value="tr" lang="tr">Türkçe</option>
<option value="uk" lang="uk">Українська</option><!-- Ukrayins’ka -->
<option value="ur" lang="ur">اردو</option><!-- Urdu -->
<option value="vi" lang="vi">Tiếng Việt</option>
<option value="war" lang="war">Winaray</option>
<option value="zh" lang="zh">中文</option><!-- Zhōngwén -->
<option value="ru" lang="ru">Русский</option><!-- Russkiy -->
<option value="yue" lang="yue">粵語</option>
</select>
<div class="styled-select-active-helper"></div>
</div>
<i class="sprite svg-arrow-down"></i>
</div>
</div>
<button class="pure-button pure-button-primary-progressive" type="submit">
<i class="sprite svg-search-icon" data-jsl10n="search-input-button">Search</i>
</button>
<input type="hidden" value="Go" name="go">
</fieldset>
</form>
</div>
<nav data-jsl10n="all-languages-nav-label" aria-label="All languages">
<div class="lang-list-button-wrapper">
<button id="js-lang-list-button" aria-expanded="false" aria-controls="js-lang-lists" class="lang-list-button">
<i class="sprite svg-language-icon"></i>
<span class="lang-list-button-text jsl10n" data-jsl10n="portal.language-button-text">Read Wikipedia in your language </span>
<i class="sprite svg-arrow-down-blue"></i>
</button>
</div>
<div class="lang-list-border"></div>
<div class="lang-list-container">
<div id="js-lang-lists" class="lang-list-content">
<h2 class="bookshelf-container">
<span class="bookshelf">
<span class="text">
<bdi dir="ltr">
1,000,000+
</bdi>
<span class="jsl10n" data-jsl10n="entries">
articles
</span>
</span>
</span>
</h2>
<div class="langlist langlist-large hlist" data-el-section="secondary links">
<ul>
<li><a href="//ar.wikipedia.org/" lang="ar" title="Al-ʿArabīyah"><bdi dir="rtl">العربية</bdi></a></li>
<li><a href="//de.wikipedia.org/" lang="de">Deutsch</a></li>
<li><a href="//en.wikipedia.org/" lang="en" title="English">English</a></li>
<li><a href="//es.wikipedia.org/" lang="es">Español</a></li>
<li><a href="//fa.wikipedia.org/" lang="fa" title="Fārsi"><bdi dir="rtl">فارسی</bdi></a></li>
<li><a href="//fr.wikipedia.org/" lang="fr">Français</a></li>
<li><a href="//it.wikipedia.org/" lang="it">Italiano</a></li>
<li><a href="//arz.wikipedia.org/" lang="arz" title="Maṣrī"><bdi dir="rtl">مصرى</bdi></a></li>
<li><a href="//nl.wikipedia.org/" lang="nl">Nederlands</a></li>
<li><a href="//ja.wikipedia.org/" lang="ja" title="Nihongo">日本語</a></li>
<li><a href="//pl.wikipedia.org/" lang="pl">Polski</a></li>
<li><a href="//pt.wikipedia.org/" lang="pt">Português</a></li>
<li><a href="//ceb.wikipedia.org/" lang="ceb">Sinugboanong Binisaya</a></li>
<li><a href="//sv.wikipedia.org/" lang="sv">Svenska</a></li>
<li><a href="//uk.wikipedia.org/" lang="uk" title="Ukrayins’ka">Українська</a></li>
<li><a href="//vi.wikipedia.org/" lang="vi">Tiếng Việt</a></li>
<li><a href="//war.wikipedia.org/" lang="war">Winaray</a></li>
<li><a href="//zh.wikipedia.org/" lang="zh" title="Zhōngwén">中文</a></li>
<li><a href="//ru.wikipedia.org/" lang="ru" title="Russkiy">Русский</a></li>
</ul>
</div>
<h2 class="bookshelf-container">
<span class="bookshelf">
<span class="text">
<bdi dir="ltr">
100,000+
</bdi>
<span class="jsl10n" data-jsl10n="portal.entries">
articles
</span>
</span>
</span>
</h2>
<div class="langlist langlist-large hlist" data-el-section="secondary links">
<ul>
<li><a href="//af.wikipedia.org/" lang="af">Afrikaans</a></li>
<li><a href="//ast.wikipedia.org/" lang="ast">Asturianu</a></li>
<li><a href="//az.wikipedia.org/" lang="az">Azərbaycanca</a></li>
<li><a href="//bg.wikipedia.org/" lang="bg" title="Bǎlgarski">Български</a></li>
<li><a href="//zh-min-nan.wikipedia.org/" lang="nan" title="Bân-lâm-gú">閩南語 / Bân-lâm-gú</a></li>
<li><a href="//bn.wikipedia.org/" lang="bn" title="Bangla">বাংলা</a></li>
<li><a href="//be.wikipedia.org/" lang="be" title="Belaruskaya">Беларуская</a></li>
<li><a href="//ca.wikipedia.org/" lang="ca">Català</a></li>
<li><a href="//cs.wikipedia.org/" lang="cs">Čeština</a></li>
<li><a href="//cy.wikipedia.org/" lang="cy">Cymraeg</a></li>
<li><a href="//da.wikipedia.org/" lang="da">Dansk</a></li>
<li><a href="//et.wikipedia.org/" lang="et">Eesti</a></li>
<li><a href="//el.wikipedia.org/" lang="el" title="Ellīniká">Ελληνικά</a></li>
<li><a href="//eo.wikipedia.org/" lang="eo">Esperanto</a></li>
<li><a href="//eu.wikipedia.org/" lang="eu">Euskara</a></li>
<li><a href="//gl.wikipedia.org/" lang="gl" title="Galego">Galego</a></li>
<li><a href="//ko.wikipedia.org/" lang="ko" title="Hangugeo">한국어</a></li>
<li><a href="//hy.wikipedia.org/" lang="hy" title="Hayeren">Հայերեն</a></li>
<li><a href="//hi.wikipedia.org/" lang="hi" title="Hindī">हिन्दी</a></li>
<li><a href="//hr.wikipedia.org/" lang="hr">Hrvatski</a></li>
<li><a href="//id.wikipedia.org/" lang="id">Bahasa Indonesia</a></li>
<li><a href="//he.wikipedia.org/" lang="he" title="Ivrit"><bdi dir="rtl">עברית</bdi></a></li>
<li><a href="//ka.wikipedia.org/" lang="ka" title="Kartuli">ქართული</a></li>
<li><a href="//lld.wikipedia.org/" lang="lld">Ladin</a></li>
<li><a href="//la.wikipedia.org/" lang="la">Latina</a></li>
<li><a href="//lv.wikipedia.org/" lang="lv">Latviešu</a></li>
<li><a href="//lt.wikipedia.org/" lang="lt">Lietuvių</a></li>
<li><a href="//hu.wikipedia.org/" lang="hu">Magyar</a></li>
<li><a href="//mk.wikipedia.org/" lang="mk" title="Makedonski">Македонски</a></li>
<li><a href="//ms.wikipedia.org/" lang="ms" title="Bahasa Melayu">Bahasa Melayu</a></li>
<li><a href="//min.wikipedia.org/" lang="min">Bahaso Minangkabau</a></li>
<li><a href="//my.wikipedia.org/" lang="my" title="Myanmarsar">မြန်မာဘာသာ</a></li>
<li lang="no">Norsk<ul><li><a href="//no.wikipedia.org/" lang="nb">bokmål</a></li><li><a href="//nn.wikipedia.org/" lang="nn">nynorsk</a></li></ul></li>
<li><a href="//ce.wikipedia.org/" lang="ce" title="Noxçiyn">Нохчийн</a></li>
<li><a href="//uz.wikipedia.org/" lang="uz">Oʻzbekcha / Ўзбекча</a></li>
<li><a href="//kk.wikipedia.org/" lang="kk"><span lang="kk-Cyrl">Қазақша</span> / <span lang="kk-Latn">Qazaqşa</span> / <bdi lang="kk-Arab" dir="rtl">قازاقشا</bdi></a></li>
<li><a href="//ro.wikipedia.org/" lang="ro">Română</a></li>
<li><a href="//sq.wikipedia.org/" lang="sq">Shqip</a></li>
<li><a href="//simple.wikipedia.org/" lang="en">Simple English</a></li>
<li><a href="//sk.wikipedia.org/" lang="sk">Slovenčina</a></li>
<li><a href="//sl.wikipedia.org/" lang="sl" title="Slovenščina">Slovenščina</a></li>
<li><a href="//sr.wikipedia.org/" lang="sr">Српски / Srpski</a></li>
<li><a href="//sh.wikipedia.org/" lang="sh">Srpskohrvatski / Српскохрватски</a></li>
<li><a href="//fi.wikipedia.org/" lang="fi">Suomi</a></li>
<li><a href="//ta.wikipedia.org/" lang="ta" title="Tamiḻ">தமிழ்</a></li>
<li><a href="//tt.wikipedia.org/" lang="tt">Татарча / Tatarça</a></li>
<li><a href="//te.wikipedia.org/" lang="te" title="Telugu">తెలుగు</a></li>
<li><a href="//th.wikipedia.org/" lang="th" title="Phasa Thai">ภาษาไทย</a></li>
<li><a href="//tg.wikipedia.org/" lang="tg" title="Tojikī">Тоҷикӣ</a></li>
<li><a href="//azb.wikipedia.org/" lang="azb" title="Türkce"><bdi dir="rtl">تۆرکجه</bdi></a></li>
<li><a href="//tr.wikipedia.org/" lang="tr">Türkçe</a></li>
<li><a href="//ur.wikipedia.org/" lang="ur" title="Urdu"><bdi dir="rtl">اردو</bdi></a></li>
<li><a href="//zh-yue.wikipedia.org/" lang="yue">粵語</a></li>
</ul>
</div>
<h2 class="bookshelf-container">
<span class="bookshelf">
<span class="text">
<bdi dir="ltr">
10,000+
</bdi>
<span class="jsl10n" data-jsl10n="portal.entries">
articles
</span>
</span>
</span>
</h2>
<div class="langlist hlist" data-el-section="secondary links">
<ul>
<li><a href="//ace.wikipedia.org/" lang="ace">Bahsa Acèh</a></li>
<li><a href="//als.wikipedia.org/" lang="gsw">Alemannisch</a></li>
<li><a href="//am.wikipedia.org/" lang="am" title="Āmariññā">አማርኛ</a></li>
<li><a href="//an.wikipedia.org/" lang="an">Aragonés</a></li>
<li><a href="//hyw.wikipedia.org/" lang="hyw" title="Arevmdahayeren">Արեւմտահայերէն</a></li>
<li><a href="//gor.wikipedia.org/" lang="gor">Bahasa Hulontalo</a></li>
<li><a href="//ban.wikipedia.org/" lang="ban">Basa Bali</a></li>
<li><a href="//bjn.wikipedia.org/" lang="bjn">Bahasa Banjar</a></li>
<li><a href="//map-bms.wikipedia.org/" lang="map-x-bms">Basa Banyumasan</a></li>
<li><a href="//ba.wikipedia.org/" lang="ba" title="Başqortsa">Башҡортса</a></li>
<li><a href="//be-tarask.wikipedia.org/" lang="be-tarask" title="Bielaruskaja (taraškievica)">Беларуская (тарашкевіца)</a></li>
<li><a href="//bcl.wikipedia.org/" lang="bcl">Bikol Central</a></li>
<li><a href="//bpy.wikipedia.org/" lang="bpy" title="Bishnupriya Manipuri">বিষ্ণুপ্রিয়া মণিপুরী</a></li>
<li><a href="//bar.wikipedia.org/" lang="bar">Boarisch</a></li>
<li><a href="//bs.wikipedia.org/" lang="bs">Bosanski</a></li>
<li><a href="//br.wikipedia.org/" lang="br">Brezhoneg</a></li>
<li><a href="//cv.wikipedia.org/" lang="cv" title="Čăvašla">Чӑвашла</a></li>
<li><a href="//dag.wikipedia.org/" lang="dag">Dagbanli</a></li>
<li><a href="//ary.wikipedia.org/" lang="ary" title="Darija"><bdi dir="rtl">الدارجة</bdi></a></li>
<li><a href="//nv.wikipedia.org/" lang="nv">Diné Bizaad</a></li>
<li><a href="//eml.wikipedia.org/" lang="roa-x-eml">Emigliàn–Rumagnòl</a></li>
<li><a href="//hif.wikipedia.org/" lang="hif">Fiji Hindi</a></li>
<li><a href="//fo.wikipedia.org/" lang="fo">Føroyskt</a></li>
<li><a href="//fy.wikipedia.org/" lang="fy">Frysk</a></li>
<li><a href="//ga.wikipedia.org/" lang="ga">Gaeilge</a></li>
<li><a href="//gd.wikipedia.org/" lang="gd">Gàidhlig</a></li>
<li><a href="//glk.wikipedia.org/" lang="glk" title="Giləki"><bdi dir="rtl">گیلکی</bdi></a></li>
<li><a href="//gu.wikipedia.org/" lang="gu" title="Gujarati">ગુજરાતી</a></li>
<li><a href="//hak.wikipedia.org/" lang="hak">Hak-kâ-ngî / 客家語</a></li>
<li><a href="//ha.wikipedia.org/" lang="ha">Hausa</a></li>
<li><a href="//hsb.wikipedia.org/" lang="hsb">Hornjoserbsce</a></li>
<li><a href="//io.wikipedia.org/" lang="io">Ido</a></li>
<li><a href="//ig.wikipedia.org/" lang="ig">Igbo</a></li>
<li><a href="//ilo.wikipedia.org/" lang="ilo">Ilokano</a></li>
<li><a href="//ia.wikipedia.org/" lang="ia">Interlingua</a></li>
<li><a href="//ie.wikipedia.org/" lang="ie">Interlingue</a></li>
<li><a href="//os.wikipedia.org/" lang="os" title="Iron">Ирон</a></li>
<li><a href="//is.wikipedia.org/" lang="is">Íslenska</a></li>
<li><a href="//jv.wikipedia.org/" lang="jv">Jawa</a></li>
<li><a href="//kn.wikipedia.org/" lang="kn" title="Kannada">ಕನ್ನಡ</a></li>
<li><a href="//pam.wikipedia.org/" lang="pam">Kapampangan</a></li>
<li><a href="//km.wikipedia.org/" lang="km" title="Phéasa Khmér">ភាសាខ្មែរ</a></li>
<li><a href="//avk.wikipedia.org/" lang="avk">Kotava</a></li>
<li><a href="//ht.wikipedia.org/" lang="ht">Kreyòl Ayisyen</a></li>
<li><a href="//ku.wikipedia.org/" lang="ku"><span lang="ku-Latn">Kurdî</span> / <bdi lang="ku-Arab" dir="rtl">كوردی</bdi></a></li>
<li><a href="//ckb.wikipedia.org/" lang="ckb" title="Kurdîy Nawendî"><bdi dir="rtl">کوردیی ناوەندی</bdi></a></li>
<li><a href="//ky.wikipedia.org/" lang="ky" title="Kyrgyzča">Кыргызча</a></li>
<li><a href="//mrj.wikipedia.org/" lang="mjr" title="Kyryk Mary">Кырык мары</a></li>
<li><a href="//lb.wikipedia.org/" lang="lb">Lëtzebuergesch</a></li>
<li><a href="//lij.wikipedia.org/" lang="lij">Lìgure</a></li>
<li><a href="//li.wikipedia.org/" lang="li">Limburgs</a></li>
<li><a href="//lmo.wikipedia.org/" lang="lmo">Lombard</a></li>
<li><a href="//mai.wikipedia.org/" lang="mai" title="Maithilī">मैथिली</a></li>
<li><a href="//mg.wikipedia.org/" lang="mg">Malagasy</a></li>
<li><a href="//ml.wikipedia.org/" lang="ml" title="Malayalam">മലയാളം</a></li>
<li><a href="//mr.wikipedia.org/" lang="mr" title="Marathi">मराठी</a></li>
<li><a href="//xmf.wikipedia.org/" lang="xmf" title="Margaluri">მარგალური</a></li>
<li><a href="//mzn.wikipedia.org/" lang="mzn" title="Mäzeruni"><bdi dir="rtl">مازِرونی</bdi></a></li>
<li><a href="//cdo.wikipedia.org/" lang="cdo" title="Ming-deng-ngu">Mìng-dĕ̤ng-ngṳ̄ / 閩東語</a></li>
<li><a href="//mn.wikipedia.org/" lang="mn" title="Mongol">Монгол</a></li>
<li><a href="//nap.wikipedia.org/" lang="nap">Napulitano</a></li>
<li><a href="//new.wikipedia.org/" lang="new" title="Nepal Bhasa">नेपाल भाषा</a></li>
<li><a href="//ne.wikipedia.org/" lang="ne" title="Nepālī">नेपाली</a></li>
<li><a href="//frr.wikipedia.org/" lang="frr">Nordfriisk</a></li>
<li><a href="//oc.wikipedia.org/" lang="oc">Occitan</a></li>
<li><a href="//mhr.wikipedia.org/" lang="mhr" title="Olyk Marij">Олык марий</a></li>
<li><a href="//or.wikipedia.org/" lang="or" title="Oṛiā">ଓଡି଼ଆ</a></li>
<li><a href="//as.wikipedia.org/" lang="as" title="Ôxômiya">অসমীযা়</a></li>
<li><a href="//pa.wikipedia.org/" lang="pa" title="Pañjābī (Gurmukhī)">ਪੰਜਾਬੀ</a></li>
<li><a href="//pnb.wikipedia.org/" lang="pnb" title="Pañjābī (Shāhmukhī)"><bdi dir="rtl">پنجابی (شاہ مکھی)</bdi></a></li>
<li><a href="//ps.wikipedia.org/" lang="ps" title="Paʂto"><bdi dir="rtl">پښتو</bdi></a></li>
<li><a href="//pms.wikipedia.org/" lang="pms">Piemontèis</a></li>
<li><a href="//nds.wikipedia.org/" lang="nds">Plattdüütsch</a></li>
<li><a href="//crh.wikipedia.org/" lang="crh">Qırımtatarca</a></li>
<li><a href="//qu.wikipedia.org/" lang="qu">Runa Simi</a></li>
<li><a href="//sa.wikipedia.org/" lang="sa" title="Saṃskṛtam">संस्कृतम्</a></li>
<li><a href="//sat.wikipedia.org/" lang="sat" title="Santali">ᱥᱟᱱᱛᱟᱲᱤ</a></li>
<li><a href="//sah.wikipedia.org/" lang="sah" title="Saxa Tyla">Саха Тыла</a></li>
<li><a href="//sco.wikipedia.org/" lang="sco">Scots</a></li>
<li><a href="//sn.wikipedia.org/" lang="sn">ChiShona</a></li>
<li><a href="//scn.wikipedia.org/" lang="scn">Sicilianu</a></li>
<li><a href="//si.wikipedia.org/" lang="si" title="Siṃhala">සිංහල</a></li>
<li><a href="//sd.wikipedia.org/" lang="sd" title="Sindhī"><bdi dir="rtl">سنڌي</bdi></a></li>
<li><a href="//szl.wikipedia.org/" lang="szl">Ślůnski</a></li>
<li><a href="//su.wikipedia.org/" lang="su">Basa Sunda</a></li>
<li><a href="//sw.wikipedia.org/" lang="sw">Kiswahili</a></li>
<li><a href="//tl.wikipedia.org/" lang="tl">Tagalog</a></li>
<li><a href="//shn.wikipedia.org/" lang="shn">ၽႃႇသႃႇတႆး</a></li>
<li><a href="//zgh.wikipedia.org/" lang="zgh" title="Tamazight tanawayt">ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ</a></li>
<li><a href="//tum.wikipedia.org/" lang="tum">chiTumbuka</a></li>
<li><a href="//bug.wikipedia.org/" lang="bug">Basa Ugi</a></li>
<li><a href="//vec.wikipedia.org/" lang="vec">Vèneto</a></li>
<li><a href="//vo.wikipedia.org/" lang="vo">Volapük</a></li>
<li><a href="//wa.wikipedia.org/" lang="wa">Walon</a></li>
<li><a href="//zh-classical.wikipedia.org/" lang="lzh" title="Wényán">文言</a></li>
<li><a href="//wuu.wikipedia.org/" lang="wuu" title="Wúyǔ">吴语</a></li>
<li><a href="//yi.wikipedia.org/" lang="yi" title="Yidiš"><bdi dir="rtl">ייִדיש</bdi></a></li>
<li><a href="//yo.wikipedia.org/" lang="yo">Yorùbá</a></li>
<li><a href="//diq.wikipedia.org/" lang="diq">Zazaki</a></li>
<li><a href="//bat-smg.wikipedia.org/" lang="sgs">žemaitėška</a></li>
<li><a href="//zu.wikipedia.org/" lang="zu">isiZulu</a></li>
<li><a href="//mni.wikipedia.org/" lang="mni">ꯃꯤꯇꯩ ꯂꯣꯟ</a></li>
</ul>
</div>
<h2 class="bookshelf-container">
<span class="bookshelf">
<span class="text">
<bdi dir="ltr">
1,000+
</bdi>
<span class="jsl10n" data-jsl10n="portal.entries">
articles
</span>
</span>
</span>
</h2>
<div class="langlist hlist" data-el-section="secondary links">
<ul>
<li><a href="//lad.wikipedia.org/" lang="lad"><span lang="lad-Latn">Dzhudezmo</span> / <bdi lang="lad-Hebr" dir="rtl">לאדינו</bdi></a></li>
<li><a href="//kbd.wikipedia.org/" lang="kbd" title="Adighabze">Адыгэбзэ</a></li>
<li><a href="//ang.wikipedia.org/" lang="ang">Ænglisc</a></li>
<li><a href="//smn.wikipedia.org/" lang="smn" title="Anarâškielâ">Anarâškielâ</a></li>
<li><a href="//anp.wikipedia.org/" lang="anp" title="Angika">अंगिका</a></li>
<li><a href="//ab.wikipedia.org/" lang="ab" title="Aṗsshwa">Аԥсшәа</a></li>
<li><a href="//roa-rup.wikipedia.org/" lang="rup">armãneashti</a></li>
<li><a href="//frp.wikipedia.org/" lang="frp">Arpitan</a></li>
<li><a href="//atj.wikipedia.org/" lang="atj">atikamekw</a></li>
<li><a href="//arc.wikipedia.org/" lang="arc" title="Ātûrāyâ"><bdi dir="rtl">ܐܬܘܪܝܐ</bdi></a></li>
<li><a href="//gn.wikipedia.org/" lang="gn">Avañe’ẽ</a></li>
<li><a href="//av.wikipedia.org/" lang="av" title="Avar">Авар</a></li>
<li><a href="//ay.wikipedia.org/" lang="ay">Aymar</a></li>
<li><a href="//bew.wikipedia.org/" lang="bew">Betawi</a></li>
<li><a href="//bh.wikipedia.org/" lang="bh" title="Bhōjapurī">भोजपुरी</a></li>
<li><a href="//bi.wikipedia.org/" lang="bi">Bislama</a></li>
<li><a href="//bo.wikipedia.org/" lang="bo" title="Bod Skad">བོད་ཡིག</a></li>
<li><a href="//bxr.wikipedia.org/" lang="bxr" title="Buryad">Буряад</a></li>
<li><a href="//cbk-zam.wikipedia.org/" lang="cbk-x-zam">Chavacano de Zamboanga</a></li>
<li><a href="//ny.wikipedia.org/" lang="ny">Chichewa</a></li>
<li><a href="//co.wikipedia.org/" lang="co">Corsu</a></li>
<li><a href="//za.wikipedia.org/" lang="za">Vahcuengh / 話僮</a></li>
<li><a href="//dga.wikipedia.org/" lang="dga">Dagaare</a></li>
<li><a href="//se.wikipedia.org/" lang="se" title="Davvisámegiella">Davvisámegiella</a></li>
<li><a href="//pdc.wikipedia.org/" lang="pdc">Deitsch</a></li>
<li><a href="//dv.wikipedia.org/" lang="dv" title="Divehi"><bdi dir="rtl">ދިވެހިބަސް</bdi></a></li>
<li><a href="//dsb.wikipedia.org/" lang="dsb">Dolnoserbski</a></li>
<li><a href="//dtp.wikipedia.org/" lang="dtp">Dusun Bundu-liwan</a></li>
<li><a href="//myv.wikipedia.org/" lang="myv" title="Erzjanj">Эрзянь</a></li>
<li><a href="//ext.wikipedia.org/" lang="ext">Estremeñu</a></li>
<li><a href="//fon.wikipedia.org/" lang="fon">Fɔ̀ngbè</a></li>
<li><a href="//ff.wikipedia.org/" lang="ff">Fulfulde</a></li>
<li><a href="//fur.wikipedia.org/" lang="fur">Furlan</a></li>
<li><a href="//gv.wikipedia.org/" lang="gv">Gaelg</a></li>
<li><a href="//gag.wikipedia.org/" lang="gag">Gagauz</a></li>
<li><a href="//inh.wikipedia.org/" lang="inh" title="Ghalghai">ГӀалгӀай</a></li>
<li><a href="//gpe.wikipedia.org/" lang="gpe">Ghanaian Pidgin</a></li>
<li><a href="//ki.wikipedia.org/" lang="ki">Gĩkũyũ</a></li>
<li><a href="//gan.wikipedia.org/" lang="gan" title="Gon ua" data-hans="赣语" data-hant="贛語" class="jscnconv">赣语 / 贛語</a></li>
<li><a href="//guw.wikipedia.org/" lang="guw">Gungbe</a></li>
<li><a href="//xal.wikipedia.org/" lang="xal" title="Halʹmg">Хальмг</a></li>
<li><a href="//haw.wikipedia.org/" lang="haw">ʻŌlelo Hawaiʻi</a></li>
<li><a href="//rw.wikipedia.org/" lang="rw">Ikinyarwanda</a></li>
<li><a href="//iba.wikipedia.org/" lang="iba">Jaku Iban</a></li>
<li><a href="//kbp.wikipedia.org/" lang="kbp">Kabɩyɛ</a></li>
<li><a href="//csb.wikipedia.org/" lang="csb">Kaszëbsczi</a></li>
<li><a href="//kw.wikipedia.org/" lang="kw">Kernewek</a></li>
<li><a href="//kv.wikipedia.org/" lang="kv" title="Komi">Коми</a></li>
<li><a href="//koi.wikipedia.org/" lang="koi" title="Perem Komi">Перем коми</a></li>
<li><a href="//kg.wikipedia.org/" lang="kg">Kongo</a></li>
<li><a href="//gom.wikipedia.org/" lang="gom">कोंकणी / Konknni</a></li>
<li><a href="//ks.wikipedia.org/" lang="ks" title="Koshur"><bdi dir="rtl">كٲشُر</bdi></a></li>
<li><a href="//gcr.wikipedia.org/" lang="gcr">Kriyòl Gwiyannen</a></li>
<li><a href="//kge.wikipedia.org/" lang="kge">Kumoring</a></li>
<li><a href="//kus.wikipedia.org/" lang="kus">Kʋsaal</a></li>
<li><a href="//lo.wikipedia.org/" lang="lo" title="Phaasaa Laao">ພາສາລາວ</a></li>
<li><a href="//lbe.wikipedia.org/" lang="lbe" title="Lakku">Лакку</a></li>
<li><a href="//ltg.wikipedia.org/" lang="ltg">Latgaļu</a></li>
<li><a href="//lez.wikipedia.org/" lang="lez" title="Lezgi">Лезги</a></li>
<li><a href="//nia.wikipedia.org/" lang="nia">Li Niha</a></li>
<li><a href="//ln.wikipedia.org/" lang="ln">Lingála</a></li>
<li><a href="//lfn.wikipedia.org/" lang="lfn">Lingua Franca Nova</a></li>
<li><a href="//olo.wikipedia.org/" lang="olo">livvinkarjala</a></li>
<li><a href="//jbo.wikipedia.org/" lang="jbo">lojban</a></li>
<li><a href="//lg.wikipedia.org/" lang="lg">Luganda</a></li>
<li><a href="//mad.wikipedia.org/" lang="mad">Madhurâ</a></li>
<li><a href="//mt.wikipedia.org/" lang="mt">Malti</a></li>
<li><a href="//btm.wikipedia.org/" lang="btm">Mandailing</a></li>
<li><a href="//mi.wikipedia.org/" lang="mi">Māori</a></li>
<li><a href="//mwl.wikipedia.org/" lang="mwl">Mirandés</a></li>
<li><a href="//mdf.wikipedia.org/" lang="mdf" title="Mokšenj">Мокшень</a></li>
<li><a href="//mnw.wikipedia.org/" lang="mnw">ဘာသာ မန်</a></li>
<li><a href="//mos.wikipedia.org/" lang="mos">Moore</a></li>
<li><a href="//nqo.wikipedia.org/" lang="nqo" title="N&#x27;Ko">ߒߞߏ</a></li>
<li><a href="//fj.wikipedia.org/" lang="fj">Na Vosa Vaka-Viti</a></li>
<li><a href="//nah.wikipedia.org/" lang="nah">Nāhuatlahtōlli</a></li>
<li><a href="//pcm.wikipedia.org/" lang="pcm">Naijá</a></li>
<li><a href="//nds-nl.wikipedia.org/" lang="nds-nl">Nedersaksisch</a></li>
<li><a href="//nrm.wikipedia.org/" lang="roa-x-nrm">Nouormand / Normaund</a></li>
<li><a href="//nov.wikipedia.org/" lang="nov">Novial</a></li>
<li><a href="//om.wikipedia.org/" lang="om">Afaan Oromoo</a></li>
<li><a href="//blk.wikipedia.org/" lang="blk">ပအိုဝ်ႏဘာႏသာႏ</a></li>
<li><a href="//pi.wikipedia.org/" lang="pi" title="Pāḷi">पालि</a></li>
<li><a href="//pag.wikipedia.org/" lang="pag">Pangasinán</a></li>
<li><a href="//ami.wikipedia.org/" lang="ami">Pangcah</a></li>
<li><a href="//pap.wikipedia.org/" lang="pap">Papiamentu</a></li>
<li><a href="//jam.wikipedia.org/" lang="jam">Patois</a></li>
<li><a href="//pfl.wikipedia.org/" lang="pfl">Pfälzisch</a></li>
<li><a href="//pcd.wikipedia.org/" lang="pcd">Picard</a></li>
<li><a href="//krc.wikipedia.org/" lang="krc" title="Qaraçay–Malqar">Къарачай–малкъар</a></li>
<li><a href="//kaa.wikipedia.org/" lang="kaa">Qaraqalpaqsha</a></li>
<li><a href="//ksh.wikipedia.org/" lang="ksh">Ripoarisch</a></li>
<li><a href="//rm.wikipedia.org/" lang="rm">Rumantsch</a></li>
<li><a href="//rue.wikipedia.org/" lang="rue" title="Rusin’skyj">Русиньскый</a></li>
<li><a href="//szy.wikipedia.org/" lang="szy">Sakizaya</a></li>
<li><a href="//sm.wikipedia.org/" lang="sm">Gagana Sāmoa</a></li>
<li><a href="//skr.wikipedia.org/" lang="skr" title="Saraiki">سرائیکی</a></li>
<li><a href="//sc.wikipedia.org/" lang="sc">Sardu</a></li>
<li><a href="//trv.wikipedia.org/" lang="trv">Seediq</a></li>
<li><a href="//stq.wikipedia.org/" lang="stq">Seeltersk</a></li>
<li><a href="//st.wikipedia.org/" lang="st">Sesotho</a></li>
<li><a href="//nso.wikipedia.org/" lang="nso">Sesotho sa Leboa</a></li>
<li><a href="//tn.wikipedia.org/" lang="tn">Setswana</a></li>
<li><a href="//cu.wikipedia.org/" lang="cu" title="Slověnĭskŭ">Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ</a></li>
<li><a href="//so.wikipedia.org/" lang="so">Soomaaliga</a></li>
<li><a href="//srn.wikipedia.org/" lang="srn">Sranantongo</a></li>
<li><a href="//ss.wikipedia.org/" lang="ss">SiSwati</a></li>
<li><a href="//shi.wikipedia.org/" lang="shi">Taclḥit</a></li>
<li><a href="//ty.wikipedia.org/" lang="ty">Reo tahiti</a></li>
<li><a href="//kab.wikipedia.org/" lang="kab" title="Taqbaylit">Taqbaylit</a></li>
<li><a href="//roa-tara.wikipedia.org/" lang="roa">Tarandíne</a></li>
<li><a href="//tay.wikipedia.org/" lang="tay">Tayal</a></li>
<li><a href="//tet.wikipedia.org/" lang="tet">Tetun</a></li>
<li><a href="//tpi.wikipedia.org/" lang="tpi">Tok Pisin</a></li>
<li><a href="//tly.wikipedia.org/" lang="tly">tolışi</a></li>
<li><a href="//to.wikipedia.org/" lang="to">faka Tonga</a></li>
<li><a href="//tk.wikipedia.org/" lang="tk">Türkmençe</a></li>
<li><a href="//tw.wikipedia.org/" lang="tw">Twi</a></li>
<li><a href="//kcg.wikipedia.org/" lang="kcg">Tyap</a></li>
<li><a href="//tyv.wikipedia.org/" lang="tyv" title="Tyva dyl">Тыва дыл</a></li>
<li><a href="//udm.wikipedia.org/" lang="udm" title="Udmurt">Удмурт</a></li>
<li><a href="//ug.wikipedia.org/" lang="ug"><bdi dir="rtl">ئۇيغۇرچه</bdi></a></li>
<li><a href="//vep.wikipedia.org/" lang="vep">Vepsän</a></li>
<li><a href="//fiu-vro.wikipedia.org/" lang="vro">võro</a></li>
<li><a href="//vls.wikipedia.org/" lang="vls">West-Vlams</a></li>
<li><a href="//wo.wikipedia.org/" lang="wo">Wolof</a></li>
<li><a href="//xh.wikipedia.org/" lang="xh">isiXhosa</a></li>
<li><a href="//zea.wikipedia.org/" lang="zea">Zeêuws</a></li>
<li><a href="//alt.wikipedia.org/" lang="alt">алтай тил</a></li>
<li><a href="//awa.wikipedia.org/" lang="awa">अवधी</a></li>
<li><a href="//dty.wikipedia.org/" lang="dty">डोटेली</a></li>
<li><a href="//tcy.wikipedia.org/" lang="tcy">ತುಳು</a></li>
</ul>
</div>
<h2 class="bookshelf-container">
<span class="bookshelf">
<span class="text">
<bdi dir="ltr">
100+
</bdi>
<span class="jsl10n" data-jsl10n="portal.entries">
articles
</span>
</span>
</span>
</h2>
<div class="langlist langlist-tiny hlist" data-el-section="secondary links">
<ul>
<li><a href="//bdr.wikipedia.org/" lang="bdr">Bajau Sama</a></li>
<li><a href="//bm.wikipedia.org/" lang="bm">Bamanankan</a></li>
<li><a href="//bbc.wikipedia.org/" lang="bbc">Batak Toba</a></li>
<li><a href="//ch.wikipedia.org/" lang="ch">Chamoru</a></li>
<li><a href="//dz.wikipedia.org/" lang="dz" title="Rdzong-Kha">རྫོང་ཁ</a></li>
<li><a href="//ee.wikipedia.org/" lang="ee">Eʋegbe</a></li>
<li><a href="//gur.wikipedia.org/" lang="gur">Farefare</a></li>
<li><a href="//got.wikipedia.org/" lang="got" title="Gutisk">𐌲𐌿𐍄𐌹𐍃𐌺</a></li>
<li><a href="//igl.wikipedia.org/" lang="igl">Igala</a></li>
<li><a href="//iu.wikipedia.org/" lang="iu">ᐃᓄᒃᑎᑐᑦ / Inuktitut</a></li>
<li><a href="//ik.wikipedia.org/" lang="ik">Iñupiak</a></li>
<li><a href="//nr.wikipedia.org/" lang="nr" title="isiNdebele seSewula">isiNdebele seSewula</a></li>
<li><a href="//kl.wikipedia.org/" lang="kl">Kalaallisut</a></li>
<li><a href="//fat.wikipedia.org/" lang="fat">Mfantse</a></li>
<li><a href="//pih.wikipedia.org/" lang="pih">Norfuk / Pitkern</a></li>
<li><a href="//ann.wikipedia.org/" lang="ann">Obolo</a></li>
<li><a href="//pwn.wikipedia.org/" lang="pwn">pinayuanan</a></li>
<li><a href="//pnt.wikipedia.org/" lang="pnt" title="Pontiaká">Ποντιακά</a></li>
<li><a href="//rmy.wikipedia.org/" lang="rmy">romani čhib</a></li>
<li><a href="//rn.wikipedia.org/" lang="rn">Ikirundi</a></li>
<li><a href="//rsk.wikipedia.org/" lang="rsk" title="Ruski">руски</a></li>
<li><a href="//sg.wikipedia.org/" lang="sg">Sängö</a></li>
<li><a href="//tdd.wikipedia.org/" lang="tdd" title="Tai taɯ xoŋ">ᥖᥭᥰᥖᥬᥳᥑᥨᥒᥰ</a></li>
<li><a href="//ti.wikipedia.org/" lang="ti" title="Təgərəña">ትግርኛ</a></li>
<li><a href="//din.wikipedia.org/" lang="din">Thuɔŋjäŋ</a></li>
<li><a href="//chr.wikipedia.org/" lang="chr" title="Tsalagi">ᏣᎳᎩ</a></li>
<li><a href="//chy.wikipedia.org/" lang="chy">Tsėhesenėstsestotse</a></li>
<li><a href="//ts.wikipedia.org/" lang="ts">Xitsonga</a></li>
<li><a href="//ve.wikipedia.org/" lang="ve">Tshivenḓa</a></li>
<li><a href="//guc.wikipedia.org/" lang="guc">Wayuunaiki</a></li>
<li><a href="//ady.wikipedia.org/" lang="ady">адыгабзэ</a></li>
</ul>
</div>
<div class="langlist langlist-others hlist" data-el-section="other languages">
<a class="jsl10n" href="https://meta.wikimedia.org/wiki/Special:MyLanguage/List_of_Wikipedias" lang data-jsl10n="other-languages-label">Other languages</a>
</div></div>
</div>
</nav>
<hr>
</main>
<footer class="footer" data-el-section="other projects">
<div class="footer-sidebar">
<div class="footer-sidebar-content">
<div class="footer-sidebar-icon sprite svg-Wikimedia-logo_black">
</div>
<div class="footer-sidebar-text jsl10n" data-jsl10n="portal.footer-description">
Wikipedia is hosted by the Wikimedia Foundation, a non-profit organization that also hosts a range of other projects.
</div>
<div class="footer-sidebar-text">
<a href="https://donate.wikimedia.org/?wmf_medium=portal&wmf_campaign=portalFooter&wmf_source=portalFooter" target="_blank">
<span class="jsl10n" data-jsl10n="footer-donate">You can support our work with a donation.</span>
</a>
</div>
</div>
</div>
<div class="footer-sidebar app-badges">
<div class="footer-sidebar-content">
<div class="footer-sidebar-text">
<div class="footer-sidebar-icon sprite svg-wikipedia_app_tile"></div>
<strong class="jsl10n" data-jsl10n="portal.app-links.title">
<a class="jsl10n" data-jsl10n="portal.app-links.url" href="https://en.wikipedia.org/wiki/List_of_Wikipedia_mobile_applications">
Download Wikipedia for Android or iOS
</a>
</strong>
<p class="jsl10n" data-jsl10n="portal.app-links.description">
Save your favorite articles to read offline, sync your reading lists across devices and customize your reading experience with the official Wikipedia app.
</p>
<ul>
<li class="app-badge app-badge-android">
<a target="_blank" rel="noreferrer" href="https://play.google.com/store/apps/details?id=org.wikipedia&referrer=utm_source%3Dportal%26utm_medium%3Dbutton%26anid%3Dadmob">
<span class="jsl10n sprite svg-badge_google_play_store" data-jsl10n="portal.app-links.google-store">Google Play Store</span>
</a>
</li>
<li class="app-badge app-badge-ios">
<a target="_blank" rel="noreferrer" href="https://itunes.apple.com/app/apple-store/id324715238?pt=208305&ct=portal&mt=8">
<span class="jsl10n sprite svg-badge_ios_app_store" data-jsl10n="portal.app-links.apple-store">Apple App Store</span>
</a>
</li>
</ul>
</div>
</div>
</div>
<nav data-jsl10n="other-projects-nav-label" aria-label="Other projects" class="other-projects">
<div class="other-project">
<a class="other-project-link" href="//commons.wikimedia.org/">
<div class="other-project-icon">
<div class="sprite svg-Commons-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="commons.name">Commons</span>
<span class="other-project-tagline jsl10n" data-jsl10n="commons.slogan">Free media collection</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//www.wikivoyage.org/">
<div class="other-project-icon">
<div class="sprite svg-Wikivoyage-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="wikivoyage.name">Wikivoyage</span>
<span class="other-project-tagline jsl10n" data-jsl10n="wikivoyage.slogan">Free travel guide</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//www.wiktionary.org/">
<div class="other-project-icon">
<div class="sprite svg-Wiktionary-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="wiktionary.name">Wiktionary</span>
<span class="other-project-tagline jsl10n" data-jsl10n="wiktionary.slogan">Free dictionary</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//www.wikibooks.org/">
<div class="other-project-icon">
<div class="sprite svg-Wikibooks-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="wikibooks.name">Wikibooks</span>
<span class="other-project-tagline jsl10n" data-jsl10n="wikibooks.slogan">Free textbooks</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//www.wikinews.org/">
<div class="other-project-icon">
<div class="sprite svg-Wikinews-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="wikinews.name">Wikinews</span>
<span class="other-project-tagline jsl10n" data-jsl10n="wikinews.slogan">Free news source</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//www.wikidata.org/">
<div class="other-project-icon">
<div class="sprite svg-Wikidata-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="wikidata.name">Wikidata</span>
<span class="other-project-tagline jsl10n" data-jsl10n="wikidata.slogan">Free knowledge base</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//www.wikiversity.org/">
<div class="other-project-icon">
<div class="sprite svg-Wikiversity-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="wikiversity.name">Wikiversity</span>
<span class="other-project-tagline jsl10n" data-jsl10n="wikiversity.slogan">Free learning resources</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//www.wikiquote.org/">
<div class="other-project-icon">
<div class="sprite svg-Wikiquote-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="wikiquote.name">Wikiquote</span>
<span class="other-project-tagline jsl10n" data-jsl10n="wikiquote.slogan">Free quote compendium</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//www.mediawiki.org/">
<div class="other-project-icon">
<div class="sprite svg-MediaWiki-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="mediawiki.name">MediaWiki</span>
<span class="other-project-tagline jsl10n" data-jsl10n="mediawiki.slogan">Free &amp; open wiki software</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//www.wikisource.org/">
<div class="other-project-icon">
<div class="sprite svg-Wikisource-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="wikisource.name">Wikisource</span>
<span class="other-project-tagline jsl10n" data-jsl10n="wikisource.slogan">Free content library</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//species.wikimedia.org/">
<div class="other-project-icon">
<div class="sprite svg-Wikispecies-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="wikispecies.name">Wikispecies</span>
<span class="other-project-tagline jsl10n" data-jsl10n="wikispecies.slogan">Free species directory</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//www.wikifunctions.org/">
<div class="other-project-icon">
<div class="sprite svg-Wikifunctions-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="wikifunctions.name">Wikifunctions</span>
<span class="other-project-tagline jsl10n" data-jsl10n="wikifunctions.slogan">Free function library</span>
</div>
</a>
</div>
<div class="other-project">
<a class="other-project-link" href="//meta.wikimedia.org/">
<div class="other-project-icon">
<div class="sprite svg-Meta-Wiki-logo_sister"></div>
</div>
<div class="other-project-text">
<span class="other-project-title jsl10n" data-jsl10n="metawiki.name">Meta-Wiki</span>
<span class="other-project-tagline jsl10n" data-jsl10n="metawiki.slogan">Community coordination &amp; documentation</span>
</div>
</a>
</div>
</nav>
<hr>
<p class="site-license">
<small class="jsl10n" data-jsl10n="license">This page is available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike License</a></small>
<small class="jsl10n" data-jsl10n="terms"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a></small>
<small class="jsl10n" data-jsl10n="privacy-policy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy Policy</a></small>
</p>
</footer>
<script>
var rtlLangs = ['ar','arc','ary','arz','bcc','bgn','bqi','ckb','dv','fa','glk','he','kk-cn','kk-arab','khw','ks','ku-arab','lki','luz','mzn','nqo','pnb','ps','sd','sdh','skr','ug','ur','yi'],
    translationsHash = 'c4ec3936',
    /**
     * This variable is used to convert the generic "portal" keyword in the data-jsl10n attributes
     * e.g. 'data-jsl10n="portal.footer-description"' into a portal-specific key, e.g. "wiki"
     * for the Wikipedia portal.
     */
    translationsPortalKey = 'wiki';
    /**
     * The wm-typeahead.js feature is used for search,and it uses domain name for searching. We want domain
     * name to be portal Specific (different for every portal).So by declaring variable 'portalSearchDomain'
     * in index.handlebars we will make this portal Specific.
    **/
    portalSearchDomain = 'wikipedia.org'
    /*
     This object is used by l10n scripts (page-localized.js, topten-localized.js)
     to reveal the page content after l10n json is loaded.
     A timer is also set to prevent JS from hiding page content indefinitelty.
     This script is inlined to safeguard againt script loading errors and placed
     at the top of the page to safeguard against any HTML loading/parsing errors.
    */
    wmL10nVisible = {
        ready: false,
        makeVisible: function(){
            if ( !wmL10nVisible.ready ) {
                wmL10nVisible.ready = true;
                document.body.className += ' jsl10n-visible';
            }
        }
    };
    window.setTimeout( wmL10nVisible.makeVisible, 1000 )
</script>
<script src="portal/wikipedia.org/assets/js/index-24c3e2ca18.js"></script>
<script src="portal/wikipedia.org/assets/js/gt-ie9-ce3fe8e88d.js"></script>
<style>
.styled-select {
        display: block;
    }
</style>
</body>
</html>

```