text:
package com.xixibase.cache;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import com.xixibase.util.CurrentTick;

import junit.framework.TestCase;

public class LocalCacheTest extends TestCase {

	static String servers;
	static boolean enableSSL = false;
	static {
		servers = System.getProperty("hosts");
		enableSSL = System.getProperty("enableSSL") != null && System.getProperty("enableSSL").equals("true");
		if (servers == null) {
			try {
				InputStream in = new BufferedInputStream(new FileInputStream("test.properties"));
				Properties p = new Properties();
				p.load(in);
				in.close();
				servers = p.getProperty("hosts");
				enableSSL = p.getProperty("enableSSL") != null && p.getProperty("enableSSL").equals("true");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	protected void setUp() throws Exception {
		super.setUp();
	}

	protected void tearDown() throws Exception {
		super.tearDown();
	}

	public void testLocalCache() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();
		assertEquals(lc.getCacheCount(), 0);
		cc.setW("xixi", "value");
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getsL("xixi").getValue(), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());
		assertEquals(lc.getMaxCacheSize(), 64 * 1024 * 1024);
		assertNull(lc.remove("errhost", cc.getGroupID(), "xixi"));
		assertNull(lc.remove(cc.getGroupID() + 1, "xixi"));
		assertEquals("value", lc.remove(cc.getGroupID(), "xixi").getValue());
		assertNull(lc.get(cc.getGroupID(), "xixi"));
		assertEquals(cc.getsLW("xixi").getValue(), "value");
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		lc.setMaxCacheSize(1024 * 1024);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		cc.setW("xixi2", "0315");
		assertEquals("0315", lc.remove(cc.getGroupID(), "xixi2").getValue());

		mgr.disableLocalCache();
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");

		mgr.shutdown();
	}

	public void testSetW() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();
		assertEquals(lc.getCacheCount(), 0);
		cc.setW("xixi", "value", 1);
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());
		assertEquals(lc.getMaxCacheSize(), 64 * 1024 * 1024);
		lc.setMaxCacheSize(1024 * 1024);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		Thread.sleep(2000);

		assertNull(lc.get(cc.getGroupID(), "xixi"));
		assertNull(cc.get("xixi"));
		assertNull(cc.getL("xixi"));
		assertNull(cc.getW("xixi"));
		assertNull(cc.getLW("xixi"));
		assertEquals(lc.getCacheCount(), 0);
		assertEquals(lc.getCacheSize(), 0);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		mgr.shutdown();
	}

	public void testSetW2() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();
		assertEquals(lc.getCacheCount(), 0);
		long ret = cc.setW("xixi", "value", 1, 123);
		assertTrue(ret != 0);
		ret = cc.setW("xixi", "value", 1, 0);
		assertTrue(ret != 0);
		CacheItem item = cc.gets("xixi");
		assertEquals("value", item.getValue());
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());
		assertEquals(lc.getMaxCacheSize(), 64 * 1024 * 1024);
		lc.setMaxCacheSize(1024 * 1024);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);
		ret = cc.setW("xixi", "value2", 1, item.getCacheID());
		assertTrue(ret != 0);

		Thread.sleep(2000);

		assertNull(cc.get("xixi"));
		assertNull(lc.get(cc.getGroupID(), "xixi"));
		assertNull(cc.getL("xixi"));
		assertNull(cc.getW("xixi"));
		assertNull(cc.getLW("xixi"));
		assertEquals(lc.getCacheCount(), 0);
		assertEquals(lc.getCacheSize(), 0);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		mgr.shutdown();
	}

	public void testAddW() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();
		assertEquals(lc.getCacheCount(), 0);
		cc.addW("xixi", "value");
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());
		assertEquals(lc.getMaxCacheSize(), 64 * 1024 * 1024);
		lc.setMaxCacheSize(1024 * 1024);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		Thread.sleep(2000);

		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		mgr.shutdown();
	}

	public void testAddW2() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();
		assertEquals(lc.getCacheCount(), 0);
		long ret = cc.addW("xixi", "value", 1);
		assertTrue(ret != 0);
		CacheItem item = cc.gets("xixi");
		assertEquals("value", item.getValue());
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());
		assertEquals(lc.getMaxCacheSize(), 64 * 1024 * 1024);
		lc.setMaxCacheSize(1024 * 1024);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);
		ret = cc.addW("xixi", "value2", 1);
		assertTrue(ret == 0);
		item = cc.gets("xixi");
		assertEquals("value", item.getValue());
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());

		Thread.sleep(2000);

		assertNull(cc.get("xixi"));
		assertNull(lc.get(cc.getGroupID(), "xixi"));
		assertNull(cc.getL("xixi"));
		assertNull(cc.getW("xixi"));
		assertNull(cc.getLW("xixi"));
		assertEquals(lc.getCacheCount(), 0);
		assertEquals(lc.getCacheSize(), 0);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		mgr.shutdown();
	}

	public void testReplaceW() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();
		assertEquals(lc.getCacheCount(), 0);
		long ret = cc.replaceW("xixi", "value");
		assertEquals(0, ret);
		ret = cc.add("xixi", "1");
		assertTrue(ret != 0);
		ret = cc.replaceW("xixi", "value");
		assertTrue(ret != 0);
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());
		assertEquals(lc.getMaxCacheSize(), 64 * 1024 * 1024);
		lc.setMaxCacheSize(1024 * 1024);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		Thread.sleep(2000);

		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		mgr.shutdown();
	}

	public void testReplaceW2() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();
		assertEquals(lc.getCacheCount(), 0);
		long ret = cc.replaceW("xixi", "value", 1);
		assertEquals(0, ret);
		ret = cc.add("xixi", "1");
		assertTrue(ret != 0);
		ret = cc.replaceW("xixi", "value", 1);
		assertTrue(ret != 0);
		CacheItem item = cc.gets("xixi");
		assertEquals("value", item.getValue());
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());
		assertEquals(lc.getMaxCacheSize(), 64 * 1024 * 1024);
		lc.setMaxCacheSize(1024 * 1024);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);
		ret = cc.addW("xixi", "value2", 1);
		assertTrue(ret == 0);
		item = cc.gets("xixi");
		assertEquals("value", item.getValue());
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value");
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());

		Thread.sleep(2000);

		assertNull(cc.get("xixi"));
		assertNull(lc.get(cc.getGroupID(), "xixi"));
		assertNull(cc.getL("xixi"));
		assertNull(cc.getW("xixi"));
		assertNull(cc.getLW("xixi"));
		assertEquals(lc.getCacheCount(), 0);
		assertEquals(lc.getCacheSize(), 0);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		mgr.shutdown();
	}

	public void testReplaceW3() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();
		assertEquals(lc.getCacheCount(), 0);
		long ret = cc.add("xixi", "value");
		assertTrue(ret != 0);
		ret = cc.replaceW("xixi", "value2", 1, 123);
		assertEquals(0, ret);
		CacheItem item = cc.gets("xixi");
		assertEquals("value", item.getValue());
		assertNull(lc.get(cc.getGroupID(), "xixi"));
		assertEquals(cc.get("xixi"), "value");
		assertEquals(cc.getL("xixi"), "value");
		assertEquals(cc.getW("xixi"), "value");
		assertEquals(cc.getLW("xixi"), "value");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(525, lc.getCacheSize());
		assertEquals(lc.getMaxCacheSize(), 64 * 1024 * 1024);
		lc.setMaxCacheSize(1024 * 1024);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);
		ret = cc.replaceW("xixi", "value2", 1, item.cacheID);
		assertTrue(ret != 0);
		item = cc.gets("xixi");
		assertEquals("value2", item.getValue());
		assertEquals(lc.get(cc.getGroupID(), "xixi").getValue(), "value2");
		assertEquals(cc.get("xixi"), "value2");
		assertEquals(cc.getL("xixi"), "value2");
		assertEquals(cc.getW("xixi"), "value2");
		assertEquals(cc.getLW("xixi"), "value2");
		assertEquals(lc.getCacheCount(), 1);
		assertEquals(526, lc.getCacheSize());

		Thread.sleep(2000);

		assertNull(cc.get("xixi"));
		assertNull(lc.get(cc.getGroupID(), "xixi"));
		assertNull(cc.getL("xixi"));
		assertNull(cc.getW("xixi"));
		assertNull(cc.getLW("xixi"));
		assertEquals(lc.getCacheCount(), 0);
		assertEquals(lc.getCacheSize(), 0);
		assertEquals(lc.getMaxCacheSize(), 1024 * 1024);
		lc.setWarningCacheRate(0.8);
		assertEquals(lc.getWarningCacheRate(), 0.8);

		mgr.shutdown();
	}

	public void testGetTouchL() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();

		long beginTime = CurrentTick.get();
		cc.set("xixi", "session", 100);
		CacheItem item = cc.getsL("xixi");
		assertNotNull(item);
		long d = item.getExpireTime() - beginTime;
		assertEquals(100, d);

		Thread.sleep(2000);

		item = cc.gets("xixi");
		assertNotNull(item);
		d = item.getExpiration();
		assertEquals(98, d);

		item = cc.getAndTouchL("xixi", 100);
		assertNotNull(item);
		assertNull(lc.get(cc.getGroupID(), "xixi"));
		d = item.getExpiration();
		assertEquals(100, d);

		Thread.sleep(50);

		item = cc.gets("xixi");
		assertNotNull(item);
		d = item.getExpiration();
		assertTrue(d <= 100 && d >= 99);

		mgr.shutdown();
	}

	public void testGetTouchL2() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();

		long beginTime = CurrentTick.get();
		cc.set("xixi", "session", 100);
		CacheItem item = cc.getsW("xixi");
		assertNotNull(item);
		long d = item.getExpireTime() - beginTime;
		assertEquals(100, d);

		Thread.sleep(2000);

		item = cc.gets("xixi");
		assertNotNull(item);
		d = item.getExpiration();
		assertEquals(98, d);

		item = cc.getAndTouchL("xixi", 100);
		assertNotNull(item);
		assertNotNull(lc.get(cc.getGroupID(), "xixi"));
		assertNull(lc.getAndTouch("errHost", cc.getGroupID(), "xixi", 1));
		d = item.getExpiration();
		assertEquals(100, d);

		Thread.sleep(50);

		item = cc.gets("xixi");
		assertNotNull(item);
		d = item.getExpiration();
		assertTrue(d <= 100 && d >= 98);

		mgr.shutdown();
	}

	public void testGetTouchW() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();

		long beginTime = CurrentTick.get();
		cc.set("xixi", "session", 100);
		CacheItem item = cc.getsW("xixi");
		assertNotNull(item);
		long d = item.getExpireTime() - beginTime;
		assertEquals(100, d);

		Thread.sleep(2000);

		item = cc.gets("xixi");
		assertNotNull(item);
		d = item.getExpiration();
		assertEquals(98, d);

		item = cc.getAndTouchW("xixi", 100);
		assertNotNull(item);
		d = item.getExpiration();
		assertEquals(100, d);

		assertEquals(100, lc.get(cc.getGroupID(), "xixi").getExpiration());

		Thread.sleep(50);

		item = cc.gets("xixi");
		assertNotNull(item);
		d = item.getExpiration();
		assertTrue(d <= 100 && d >= 99);

		mgr.shutdown();
	}

	public void testGetTouchLW() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();

		long beginTime = CurrentTick.get();
		cc.set("xixi", "session", 100);
		CacheItem item = cc.getsW("xixi");
		assertNotNull(item);
		long d = item.getExpireTime() - beginTime;
		assertEquals(100, d);

		Thread.sleep(2000);

		item = cc.gets("xixi");
		assertNotNull(item);
		d = item.getExpiration();
		assertEquals(98, d);

		item = cc.getAndTouchLW("xixi", 100);
		assertNotNull(item);
		d = item.getExpiration();
		assertEquals(100, d);

		assertEquals(100, lc.get(cc.getGroupID(), "xixi").getExpiration());

		Thread.sleep(50);

		item = cc.gets("xixi");
		assertNotNull(item);
		d = item.getExpiration();
		assertTrue(d <= 100 && d >= 99);

		mgr.shutdown();
	}

	public void testGetTouchLW2() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("LocalCacheTest");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();

		long beginTime = CurrentTick.get();
		cc.set("xixi", "session", 3);
		CacheItem item = cc.getsW("xixi");
		assertNotNull(item);
		long d = item.getExpireTime() - beginTime;
		assertEquals(3, d);

		Thread.sleep(2000);

		item = cc.gets("xixi");
		assertNotNull(item);
		d = item.getExpiration();
		assertEquals(1, d);

		item = cc.getAndTouchLW("xixi", 0);
		assertNotNull(item);
		d = item.getExpiration();
		assertEquals(0, d);

		assertEquals(0, lc.get(cc.getGroupID(), "xixi").getExpiration());

		Thread.sleep(50);

		item = cc.gets("xixi");
		assertNotNull(item);
		d = item.getExpiration();
		assertEquals(0, d);

		item = cc.getAndTouchLW("xixi", 2);
		assertNotNull(item);
		d = item.getExpiration();
		assertEquals(2, d);

		Thread.sleep(3000);
		d = item.getExpiration();
		assertEquals(-1, d);
		item = cc.gets("xixi");
		assertNull(item);

		mgr.shutdown();
	}

	public void testDropInactive() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("testDropInactive");
		String[] serverlist = servers.split(",");
		String[] serverlist2 = new String[1];
		serverlist2[0] = serverlist[0];
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		mgr.getLocalCache().setMaxCacheSize(64 * 1024);
		mgr.getLocalCache().setWarningCacheRate(0.5);
		Thread.sleep(50);
		LocalCache lc = mgr.getLocalCache();
		CacheClient cc = mgr.createClient();
		cc.flush();

		cc.set("xixi", "0315");
		assertEquals("0315", cc.getsW("xixi").getValue());
		assertEquals("0315", cc.getsL("xixi").getValue());
		assertEquals(1, lc.getCacheCount());
		for (int i = 0; i < 100; i++) {
			cc.setW("xixi" + i, "0315");
		}
		assertEquals(39, lc.getCacheCount());

		mgr.shutdown();
	}

	public void testCacheUpdate() throws InterruptedException {
		CacheClientManager mgr = CacheClientManager.getInstance("testDropInactive");
		String[] serverlist = servers.split(",");
		mgr.initialize(serverlist, enableSSL);
		mgr.enableLocalCache();
		mgr.getLocalCache().setMaxCacheSize(64 * 1024);
		mgr.getLocalCache().setWarningCacheRate(0.6);
		Thread.sleep(50);
		CacheClient cc = mgr.createClient();
		cc.flush();

		long cacheID = cc.setW("xixi", "0315");
		assertTrue(cacheID != 0);
		cc.set("xixi", "20080315");
		CacheItem item = cc.getsW("xixi");
		assertTrue(item.getCacheID() != cacheID);
		cc.flush();

		cacheID = cc.setW("xixi", "0315");
		assertTrue(cacheID != 0);
		item = cc.getsL("xixi");
		cc.set("xixi", "20080315");
		item = cc.getsW("xixi");
		assertTrue(item.getCacheID() != cacheID);

		mgr.shutdown();
	}
}


text:
var models = require('../models');

exports.view = function(req, res){

    // models.Project
    // .find()
    // .sort('date')
    // .exec(renderProjects);
  res.render('index')
}

exports.addMember = function(req, res) {
  var form_data = req.body;
  console.log(form_data);

  // query to create new member
  var newMember = new models.Member({
    "name": form_data.name,
    "email": form_data.email,
    "password": form_data.password,
    "type": form_data
  })

  newMember.save(afterSaving);

  function afterSaving(err) {
    if(err) {console.log(err); res.send(500);}
    res.redirect("./clienthome"); //redirects to userhome
  }
}

redpajama_set_name: RedPajamaGithub


text:
var searchContext = require('../lib/searchContext.js');
var assert = require('assert');
var test = require('tape');
var extend = require('extend');

test('create it', function (t) {
    t.plan(1);
    var context = searchContext({ sourceTaxa: ['bar']});
    t.deepEqual({
        interactionType: 'interactsWith',
        sourceTaxa: ['bar'],
        resultType: 'json'
    }, context.searchParameters, 'initialize search parameters');
});

['interactionType', 'bbox'].forEach(function (searchParameterName) {
    var initialSearchParameters = {
        interactionType: 'interactsWith',
        resultType: 'json'
    };
    initialSearchParameters[searchParameterName] = 'foo';

    test('Update search parameters with ' + searchParameterName, function (t) {
        t.plan(1);
        var context = searchContext();
        context.on('searchcontext:searchparameterchange', function (searchParameters) {
            t.deepEqual(searchParameters, initialSearchParameters, 'Update Search parameter ' + searchParameterName);
        });
        context.updateSearchParameter(searchParameterName, 'foo');
    });
});

['sourceTaxa'].forEach(function (searchParameterName) {
    var initialSearchParameters = {
        interactionType: 'interactsWith',
        resultType: 'json',
        sourceTaxa: ['foo']
    };
    initialSearchParameters[searchParameterName] = ['fooz'];

    test('Update search parameters with ' + searchParameterName, function (t) {
        t.plan(1);
        var context = searchContext();
        context.on('searchcontext:searchparameterchange', function (searchParameters) {
            t.deepEqual(searchParameters, initialSearchParameters, 'Update Search parameter ' + searchParameterName);
        });
        context.updateSearchParameter(searchParameterName, ['fooz']);
    });
});

['targetTaxon'].forEach(function (searchParameterName) {
    var initialSearchParameters = {
        interactionType: 'interactsWith',
        resultType: 'json',
        targetTaxon: ['foo']
    };
    initialSearchParameters[searchParameterName] = 'foo';

    test('Update search parameters with ' + searchParameterName, function (t) {
        t.plan(1);
        var context = searchContext();
        context.on('searchcontext:searchparameterchange', function (searchParameters) {
            t.deepEqual(searchParameters, initialSearchParameters, 'Update Search parameter ' + searchParameterName);
        });
        context.updateSearchParameter(searchParameterName, 'foo');
    });
});

test('Update more than one search parameter', function (t) {
    t.plan(1);
    var firstRun = true;
    var context = searchContext();
    context.on('searchcontext:searchparameterchange', function (searchParameters) {
        if (firstRun) {
            firstRun = false;
            context.updateSearchParameter('sourceTaxa', ['bar']);
        } else {
            t.deepEqual(searchParameters, {
                interactionType: 'foo',
                resultType: 'json',
                sourceTaxa: ['bar']
            }, 'Update a second parameter');
        }
    });
    context.updateSearchParameter('interactionType', 'foo');
});

test('unset search parameter', function (t) {
    t.plan(1);
    var context = searchContext({ sourceTaxa: ['bar']});
    context.on('searchcontext:searchparameterchange', function (searchParameters) {
        t.deepEqual(searchParameters, {
            resultType: 'json',
            sourceTaxa: ['bar']
        }, 'remove a parameter');
    });
    context.updateSearchParameter('interactionType', null);
});

test('update search search parameter change only', function (t) {
    t.plan(1);
    var context = searchContext({ sourceTaxa: ['bar']});
    context.on('searchcontext:searchparameterchange', function (searchParameters) {
        t.notOk('searchParameters');
    });
    context.updateSearchParameter('sourceTaxa', ['bar']);
    t.ok(context.searchParameters.sourceTaxa)
});

test('update search context change only', function (t) {
    t.plan(1);
    var context = searchContext({ sourceTaxa: ['bar']});
    context.on('searchcontext:searchparameterchange', function (searchParameters) {
        t.notOk('searchParameters');
    });
    context.update({sourceTaxa: ['bar']});
    t.ok(context.searchParameters.sourceTaxa)
});


text:
<?xml version="1.0" encoding="utf-8"?>

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
  <string name="app_name">Файли</string>
  <string name="app_description">Файловий менеджер CyanogenMod</string>
  <string name="size_bytes">б</string>
  <string name="size_kilobytes">кБ</string>
  <string name="size_megabytes">МБ</string>
  <string name="size_gigabytes">ГБ</string>
  <string name="datetime_format_order">%1$s %2$s</string>
  <string name="device_blockdevice">Блоковий пристрій</string>
  <string name="device_characterdevice">Символьний пристрій</string>
  <string name="device_namedpipe">Іменований конвеєр</string>
  <string name="device_domainsocket">Доменний сокет</string>
  <string name="mount_point_readonly">R/O</string>
  <string name="mount_point_readwrite">R/W</string>
  <string name="yes">Так</string>
  <string name="no">Ні</string>
  <string name="all">Все</string>
  <string name="overwrite">Замінити</string>
  <string name="select">Вибрати</string>
  <string name="root_directory_name"><![CDATA[<Корінь>]]></string>
  <string name="search_result_name">Пошук: <xliff:g id="terms">%1$s</xliff:g></string>
  <string name="loading_message">Завантаження\u2026</string>
  <string name="cancelled_message">Відмінено</string>
  <string name="error_message">Помилка</string>
  <string name="copy_text_cd">Натисніть, щоб скопіювати текст в буфер</string>
  <string name="copy_text_msg">Текст скопійовано у буфер</string>
  <string name="warning_title">Увага</string>
  <string name="error_title">Помилка</string>
  <string name="confirm_operation">Підтвердіть операцію</string>
  <string name="confirm_overwrite">Підтвердіть заміну</string>
  <string name="confirm_deletion">Підтвердіть видалення</string>
  <string name="msgs_change_to_prompt_access_mode_title">Підтвердити переключення</string>
  <string name="msgs_change_to_prompt_access_mode_msg">Неможливо запустити з Root правами. Переключитися в безпечний режим.\n\nЗастосувати?</string>
  <string name="msgs_cant_create_console">Не вдається отримати необхідні привілеї.</string>
  <string name="msgs_privileged_console_alloc_failed">Неможливо запустити з Root правами. Переключення в безпечний режим.</string>
  <string name="msgs_settings_save_failure">Налаштування не може бути застосоване або збережене.</string>
  <string name="msgs_settings_invalid_initial_directory">Початкова папка \'<xliff:g id="initial_dir">%1$s</xliff:g>\' недоступна. Перехід в кореневу папку.</string>
  <string name="msgs_success">Операція пройшла успішно</string>
  <string name="msgs_unknown">Було виявлено помилки. Операція завершилась невдало.</string>
  <string name="msgs_insufficient_permissions">Ця операція вимагає підвищених привілеїв. Спробуйте змінити Root-режим.</string>
  <string name="msgs_file_not_found">Файл або папка не знайдені.</string>
  <string name="msgs_command_not_found">Операції команди не були знайдені або мають невірне значення.</string>
  <string name="msgs_io_failed">Помилка читання/запису.</string>
  <string name="msgs_operation_timeout">Час виконання операції минув.</string>
  <string name="msgs_operation_failure">Операція невдала.</string>
  <string name="msgs_console_alloc_failure">Виникла внутрішня помилка.</string>
  <string name="msgs_operation_can_not_be_cancelled">Операція не може бути відмінена.</string>
  <string name="msgs_read_only_filesystem">Файлова система доступна тільки для читання. Спробуйте змонтувати файлову систему для читання/запису.</string>
  <string name="msgs_illegal_argument">Неприпустимий аргумент. Виклик не вдався.</string>
  <string name="msgs_unresolved_inconsistencies">Операція не допускається, оскільки це створить невідповідності.</string>
  <string name="msgs_operation_not_allowed_in_current_directory">Операція не допускається в поточній папці.\n\nПапка призначення не може бути вкладеною папкою джерела або самим джерелом.</string>
  <string name="msgs_push_again_to_exit">Натисніть ще раз для виходу</string>
  <string name="msgs_not_registered_app">Не знайдено застосунків для відкриття файлів даного типу</string>
  <string name="msgs_overwrite_files">Деякі файли вже існують в папці призначення.\n\nЗамінити?</string>
  <string name="msgs_action_association_failed">Прив'язка додатка до дії не вдалася</string>
  <string name="advise_insufficient_permissions">Операція вимагає підвищених привілеїв.\n\nВи хочете змінити режим Root-доступу?</string>
  <string name="parent_dir">Домашня папка</string>
  <string name="external_storage">Зовнішній накопичувач</string>
  <string name="usb_storage">USB накопичувач</string>
  <string name="actionbar_button_filesystem_cd">Інф. про систему</string>
  <string name="actionbar_button_sort_mode_cd">Режим сортування</string>
  <string name="actionbar_button_layout_mode_cd">Режим відображення</string>
  <string name="actionbar_button_other_view_options_cd">Інші налаштування відображення</string>
  <string name="actionbar_button_selection_done_cd">Готово</string>
  <string name="actionbar_button_actions_cd">Дії</string>
  <string name="actionbar_button_history_cd">Історія</string>
  <string name="actionbar_button_bookmarks_cd">Закладки</string>
  <string name="actionbar_button_search_cd">Пошук</string>
  <string name="actionbar_button_overflow_cd">Додаткові налаштування</string>
  <string name="actionbar_button_storage_cd">Накопичувальні пристрої</string>
  <string name="actionbar_button_save_cd">Зберегти</string>
  <string name="sort_by_name_asc">За ім'ям \u25B2</string>
  <string name="sort_by_name_desc">За ім'ям \u25BC</string>
  <string name="sort_by_date_asc">За датою \u25B2</string>
  <string name="sort_by_date_desc">За датою \u25BC</string>
  <string name="layout_icons">Іконки</string>
  <string name="layout_simple">Список</string>
  <string name="layout_details">Детально</string>
  <string name="cm_filemanager_show_dirs_first">Відображати папки першими</string>
  <string name="cm_filemanager_show_hidden">Відображати приховані файли</string>
  <string name="cm_filemanager_show_system">Відображати системні файли</string>
  <string name="cm_filemanager_show_symlinks">Відображати сімлінки</string>
  <string name="filesystem_info_warning_title">Немає інформації</string>
  <string name="filesystem_info_warning_msg">Немає доступної інформації про файлову систему.</string>
  <string name="filesystem_info_cant_be_mounted_msg">Файлова система не може бути змонтована/розмонтована.</string>
  <string name="filesystem_info_mount_not_allowed_msg">Монтування файлової системи неможливо в безпечному режимі. Натисніть для зміни режиму Root-доступу.</string>
  <string name="filesystem_info_mount_failed_msg">Не вдалося змонтувати файлову систему. Деякі файлові системи, такі як SD-карти, не можуть бути змонтовані/розмонтовані, тому що вони мають вбудовану файлову систему тільки для читання.</string>
  <string name="filesystem_info_dialog_title">Інформація про файлову систему</string>
  <string name="filesystem_info_dialog_tab_info">Інформація</string>
  <string name="filesystem_info_dialog_tab_disk_usage">Диск</string>
  <string name="filesystem_info_dialog_status">Статус:</string>
  <string name="filesystem_info_dialog_mount_point">Точка монтування:</string>
  <string name="filesystem_info_dialog_device">Пристрій:</string>
  <string name="filesystem_info_dialog_type">Тип:</string>
  <string name="filesystem_info_dialog_options">Опції:</string>
  <string name="filesystem_info_dialog_dump_pass">Dump / Pass:</string>
  <string name="filesystem_info_dialog_total_disk_usage">Всього:</string>
  <string name="filesystem_info_dialog_used_disk_usage">Викор.:</string>
  <string name="filesystem_info_dialog_free_disk_usage">Вільно:</string>
  <string name="fso_properties_permissions_not_allowed_msg">Зміна дозволів неможлива в безпечному режимі. Натисніть для зміни режиму Root-доступу.</string>
  <string name="fso_properties_failed_to_change_owner_msg">Зміна власника не вдалося.\n\nЗ міркувань безпеки, деякі файлові системи, такі як SD-карти, не дозволяють змінювати власника.</string>
  <string name="fso_properties_failed_to_change_group_msg">Зміна групи не вдалася.\n\nЗ міркувань безпеки, деякі файлові системи, такі як SD-карти, не дозволяють змінювати власника.</string>
  <string name="fso_properties_failed_to_change_permission_msg">Зміна дозволів не вдалася.\n\nЗ міркувань безпеки, деякі файлові системи, такі як SD-карти, не дозволяють змінювати власника.</string>
  <string name="fso_properties_dialog_title">Властивості</string>
  <string name="fso_properties_dialog_tab_info">Інформація</string>
  <string name="fso_properties_dialog_tab_permissions">Дозволи</string>
  <string name="fso_properties_dialog_name">Ім\'я:</string>
  <string name="fso_properties_dialog_parent">Батько:</string>
  <string name="fso_properties_dialog_type">Тип:</string>
  <string name="fso_properties_dialog_category">Категорія:</string>
  <string name="fso_properties_dialog_link">Посилання:</string>
  <string name="fso_properties_dialog_size">Размір:</string>
  <string name="fso_properties_dialog_contains">Містить:</string>
  <string name="fso_properties_dialog_last_accessed_date">Відкрито:</string>
  <string name="fso_properties_dialog_last_modified_date">Змінено:</string>
  <string name="fso_properties_dialog_last_changed_date">Змінено:</string>
  <string name="fso_properties_dialog_owner">Власник:</string>
  <string name="fso_properties_dialog_group">Група:</string>
  <string name="fso_properties_dialog_others">Інше:</string>
  <string name="fso_properties_dialog_include_in_media_scan">Пропустити сканування:</string>
  <string name="fso_failed_to_allow_media_scan">Не вдалось дозволити сканування</string>
  <string name="fso_failed_to_prevent_media_scan">Не вдалось уникнути сканування</string>
  <string name="fso_delete_nomedia_dir_title">Видалити папку .nomedia</string>
  <string name="fso_delete_nomedia_dir_body">Ця папка містить папку .nomedia.\n\nВидали її разом зі змістом?</string>
  <string name="fso_delete_nomedia_non_empty_title">Видалити файл .nomedia</string>
  <string name="fso_delete_nomedia_non_empty_body">Ця папка містить не пустий файл .nomedia.\n\nВи хочете її видалити?</string>
  <string name="history">Історія</string>
  <string name="msgs_history_empty">Історія пуста</string>
  <string name="msgs_history_unknown">Невідомий пункт історії</string>
  <string name="search">Результат пошуку</string>
  <string name="search_hint">Введіть умови пошуку</string>
  <string name="search_voice_hint">Промовте умови пошуку</string>
  <string name="search_error_msg">Під час пошуку виникла помилка. Нічого не знайдено.</string>
  <string name="search_no_results_msg">Нічого не знайдено.</string>
  <string name="search_found_items_in_directory"><xliff:g id="items">%1$s</xliff:g> в <xliff:g id="path">%2$s</xliff:g></string>
  <string name="search_terms"><![CDATA[Умови:]]> <xliff:g id="terms">%1$s</xliff:g></string>
  <string name="search_few_characters_title">Підтвердіть пошук</string>
  <string name="search_few_characters_msg">Деякі умови пошуку мають дуже мало символів. Операція може бути дуже затратна по часу і системних ресурсах.\n\nВи дійсно бажаєте продовжити?</string>
  <string name="searching">Будь ласка зачекайте\u2026</string>
  <string name="searching_action_label">Триває пошук\u2026</string>
  <string name="picker_title">Обрати файл</string>
  <string name="directory_picker_title">Виберіть папку</string>
  <string name="editor">Редактор</string>
  <string name="editor_invalid_file_msg">Неприпустимий файл</string>
  <string name="editor_file_not_found_msg">Файл не найдено</string>
  <string name="editor_file_exceed_size_msg">Файл занадто великий для відкриття на цьому пристрої.</string>
  <string name="editor_dirty_ask_title">Підтвердіть вихід</string>
  <string name="editor_dirty_ask_msg">Наявні не збережені зміни.\n\nВийти без збереження?</string>
  <string name="editor_successfully_saved">Файл успішно збережено</string>
  <string name="editor_read_only_mode">Файл відкритий тільки для читання</string>
  <string name="dumping_message">Генерування 16-кового дампу\u2026</string>
  <string name="displaying_message">Відображення\u2026</string>
  <string name="bookmarks">Закладки</string>
  <string name="bookmarks_home">Додому</string>
  <string name="bookmarks_root_folder">Коренева папка</string>
  <string name="bookmarks_system_folder">Системна папка</string>
  <string name="bookmarks_button_config_cd">Встановити початковою папкою.</string>
  <string name="bookmarks_button_remove_bookmark_cd">Видалити з закладок.</string>
  <string name="bookmarks_msgs_add_success">Закладка успішно створена.</string>
  <string name="initial_directory_dialog_title">Початкова папка</string>
  <string name="initial_directory_label">Вибір початкової папки:</string>
  <string name="initial_directory_relative_msg">Відносні шляхи не допускаються</string>
  <string name="initial_directory_error_msg">При установці початкової папки виникла помилка.</string>
  <string name="menu_history">Історія</string>
  <string name="menu_bookmarks">Закладки</string>
  <string name="menu_search">Пошук</string>
  <string name="menu_settings">Налаштування</string>
  <string name="menu_clear_history">Очистити історію</string>
  <string name="menu_no_suggestions">Немає припущень</string>
  <string name="menu_word_wrap">Перенесення слів</string>
  <string name="menu_syntax_highlight">Підсвітка синтаксису</string>
  <string name="create_copy_regexp"><xliff:g id="name">%1$s</xliff:g> - копія <xliff:g id="extension">%2$s</xliff:g></string>
  <string name="create_new_compress_file_regexp"><xliff:g id="name">%1$s</xliff:g> - новий <xliff:g id="extension">%2$s</xliff:g></string>
  <string name="waiting_dialog_msg">Виконання операції\u2026</string>
  <string name="waiting_dialog_copying_title">Копіюваня\u2026</string>
  <string name="waiting_dialog_copying_msg"><![CDATA[З]]> <xliff:g id="from">%1$s</xliff:g><![CDATA[
В]]> <xliff:g id="to">%2$s</xliff:g></string>
  <string name="waiting_dialog_moving_title">Переміщення\u2026</string>
  <string name="waiting_dialog_moving_msg"><![CDATA[З]]> <xliff:g id="from">%1$s</xliff:g><![CDATA[
В]]> <xliff:g id="to">%2$s</xliff:g></string>
  <string name="waiting_dialog_deleting_title">Видалення\u2026</string>
  <string name="waiting_dialog_deleting_msg"><![CDATA[Файл]]> <xliff:g id="file">%1$s</xliff:g></string>
  <string name="waiting_dialog_extracting_title">Видобування\u2026</string>
  <string name="waiting_dialog_extracting_msg"><![CDATA[Файл]]> <xliff:g id="file">%1$s</xliff:g></string>
  <string name="waiting_dialog_compressing_title">Стиснення\u2026</string>
  <string name="waiting_dialog_compressing_msg"><![CDATA[Файл]]> <xliff:g id="file">%1$s</xliff:g></string>
  <string name="waiting_dialog_analizing_msg"><![CDATA[Аналізu2026]]></string>
  <string name="msgs_extracting_success">Видобування успішно завершено. Дані видобуті до <xliff:g id="destination">%1$s</xliff:g></string>
  <string name="msgs_compressing_success">Стиснення успішно завершено. Дані стиснуті до <xliff:g id="destination">%1$s</xliff:g></string>
  <string name="actions_dialog_title">Дії</string>
  <string name="actions_menu_properties_current_folder">Властивості</string>
  <string name="actions_menu_refresh">Оновити</string>
  <string name="actions_menu_new_directory">Нова папка</string>
  <string name="actions_menu_new_file">Новий файл</string>
  <string name="actions_menu_select_all">Вибрати все</string>
  <string name="actions_menu_deselect_all">Зняти вибір</string>
  <string name="actions_menu_select">Вибір</string>
  <string name="actions_menu_deselect">Зняти вибір</string>
  <string name="actions_menu_paste_selection">Вставити</string>
  <string name="actions_menu_move_selection">Перемістити</string>
  <string name="actions_menu_delete_selection">Видалити обране</string>
  <string name="actions_menu_compress_selection">Стиснути обране</string>
  <string name="actions_menu_create_link">Створити ярлик</string>
  <string name="actions_menu_open">Відкрити</string>
  <string name="actions_menu_open_with">Відкрити в\u2026</string>
  <string name="actions_menu_execute">Виконати</string>
  <string name="actions_menu_send">Надіслати</string>
  <string name="actions_menu_send_selection">Надіслати</string>
  <string name="actions_menu_compress">Стиснути</string>
  <string name="actions_menu_extract">Видобути</string>
  <string name="actions_menu_delete">Видалити</string>
  <string name="actions_menu_rename">Перейменувати</string>
  <string name="actions_menu_create_copy">Копіювати</string>
  <string name="actions_menu_properties">Властивості</string>
  <string name="actions_menu_add_to_bookmarks">Додати до закладок</string>
  <string name="actions_menu_add_shortcut">Додати ярлик</string>
  <string name="actions_menu_open_parent_folder">Відкрити власника</string>
  <string name="actions_menu_compute_checksum">Обчислити контрольну суму</string>
  <string name="actions_ask_undone_operation_msg">Ця дія безповоротна. Ви бажаєте продовжити?</string>
  <string name="input_name_dialog_label">Ім`я:</string>
  <string name="input_name_dialog_message_empty_name">Ім`я не може бути пустим</string>
  <string name="input_name_dialog_message_invalid_path_name">Неприпустиме ім'я. Не можна використовувати символи: \'<xliff:g id="invalid_characters">%1$s</xliff:g>\'</string>
  <string name="input_name_dialog_message_invalid_name">Неприпустиме ім'я. Імена \'.\' і \'..\' не дозволяються</string>
  <string name="input_name_dialog_message_name_exists">Таке ім'я вже існує</string>
  <string name="associations_dialog_title">Асоціації</string>
  <string name="associations_dialog_remember">Запам'ятати вибір</string>
  <string name="associations_dialog_openwith_title">Відкрити в\u2026</string>
  <string name="associations_dialog_openwith_action">Відкрити</string>
  <string name="associations_dialog_sendwith_title">Відправити за допомогою\u2026</string>
  <string name="associations_dialog_sendwith_action">відправити</string>
  <string name="inline_autocomplete_tab_nothing_to_complete_msg">Немає що виконувати</string>
  <string name="execution_console_title">Консоль</string>
  <string name="execution_console_script_name_label">Скрипт:</string>
  <string name="execution_console_script_execution_time_label">Час:</string>
  <string name="execution_console_script_exitcode_label">Код завершення:</string>
  <string name="execution_console_script_execution_time_text"><xliff:g id="seconds">%1$s</xliff:g> сек.</string>
  <string name="compute_checksum_title">Обчислити контрольну суму</string>
  <string name="compute_checksum_filename_label">Файл:</string>
  <string name="compute_checksum_computing_checksum_msg">Обчислення контрольної суми\u2026</string>
  <string name="mime_folder">Папка</string>
  <string name="mime_symlink">Посилання</string>
  <string name="mime_unknown">Невідомо</string>
  <string name="filetime_format_mode_system">Системний</string>
  <string name="filetime_format_mode_locale">Регіональний</string>
  <string name="filetime_format_mode_ddMMyyyy_HHmmss">дд/мм/рррр гг:хх:ss</string>
  <string name="filetime_format_mode_MMddyyyy_HHmmss">мм/дд/рррр гг:хх:сс</string>
  <string name="filetime_format_mode_yyyyMMdd_HHmmss">рррр-мм-дд гг:хх:сс</string>
  <string name="selection_folders_and_files"><xliff:g id="folders">%1$s</xliff:g> і <xliff:g id="files">%2$s</xliff:g> вибрано.</string>
  <string name="category_system">СИСТЕМА</string>
  <string name="category_app">ДОДАТОК</string>
  <string name="category_binary">ДВІЙКОВИЙ</string>
  <string name="category_text">ТЕКСТ</string>
  <string name="category_document">ДОКУМЕНТ</string>
  <string name="category_ebook">ЕЛ. КНИГА</string>
  <string name="category_mail">ПОШТА</string>
  <string name="category_compress">СТИСНЕНИЙ</string>
  <string name="category_exec">ВИКОН. ФАЙЛ</string>
  <string name="category_database">БАЗА ДАНИХ</string>
  <string name="category_font">ШРИФТ</string>
  <string name="category_image">ЗОБРАЖЕННЯ</string>
  <string name="category_audio">АУДІО</string>
  <string name="category_video">ВІДЕО</string>
  <string name="category_security">ЗАХИСТ</string>
  <string name="compression_mode_title">Режим стиснення</string>
  <string name="shortcut_failed_msg">Не вдалося опрацювати ярлик</string>
  <string name="shortcut_creation_success_msg">Ярлик створений успішно</string>
  <string name="shortcut_creation_failed_msg">Помилка створення ярлика</string>
  <string name="pref">Налаштування</string>
  <string name="pref_general">Основні налаштування</string>
  <string name="pref_search">Налаштування пошуку</string>
  <string name="pref_editor">Налаштування редактора</string>
  <string name="pref_themes">Теми</string>
  <string name="pref_about">Про програму</string>
  <string name="pref_about_summary">Файловий менеджер v<xliff:g id="version">%1$s</xliff:g>
Copyright \u00A9 2013 The CyanogenMod Project</string>
  <string name="pref_general_behaviour_category">Основні</string>
  <string name="pref_case_sensitive_sort">Враховувати регістр</string>
  <string name="pref_case_sensitive_sort_summary">Враховувати регістр при навігації чи сортуванні пошукових результатів</string>
  <string name="pref_filetime_format_mode">Формат дати\часу</string>
  <string name="pref_disk_usage_warning_level">Попереджати про пам'ять</string>
  <string name="pref_disk_usage_warning_level_summary" formatted="false">Показувати різні кольори у віджеті використання диску коли вони досягають <xliff:g id="level">%1$s</xliff:g> процентів вільного місця на диску</string>
  <string name="pref_compute_folder_statistics">Розрахунок статистики по папках</string>
  <string name="pref_compute_folder_statistics_on">Увага! Розрахунок статистики по папках займе тривалий час і буде потрібна значна кількість системних ресурсів</string>
  <string name="pref_display_thumbs">Переглянути</string>
  <string name="pref_display_thumbs_summary">Показати зображення попереднього перегляду для додатків, музичних файлів, фотографій і відео.</string>
  <string name="pref_use_flinger">Використовувати жести</string>
  <string name="pref_use_flinger_summary">Використовуйте жест справа наліво для видалення файлів або папок</string>
  <string name="pref_general_advanced_settings_category">Разширені налаштування</string>
  <string name="pref_access_mode">Режим доступу</string>
  <string name="pref_access_mode_safe">Безпечний режим</string>
  <string name="pref_access_mode_safe_summary">Безпечний режим\n\nДодаток працює без Root-привілеїв і має доступ тільки до файлової системи накопичувачів (SD-карти або USB)</string>
  <string name="pref_access_mode_prompt">Режим запиту</string>
  <string name="pref_access_mode_prompt_summary">Режим запиту\n\nДодаток працює з Root-привілеями, але буде виводити запит на дозвіл виконання операцій з системою</string>
  <string name="pref_access_mode_root">Режим Root</string>
  <string name="pref_access_mode_root_summary">Режим Root\n\nУвага! Цей режим може вивести ваш пристрій з ладу. Всі дії в цьому режимі виконуються на ваш страх і ризик</string>
  <string name="pref_restrict_secondary_users_access_title">Обмеження доступу</string>
  <string name="pref_restrict_secondary_users_access_summary">Заборонити іншим користувачам пристрою доступ до системних папок</string>
  <string name="pref_search_results_category">Результати</string>
  <string name="pref_show_relevance_widget">Показувати актуальність</string>
  <string name="pref_highlight_terms">Виділяти умови пошуку</string>
  <string name="pref_sort_search_results_mode">Режим сортування</string>
  <string name="pref_sort_search_results_mode_none">Не сортувати</string>
  <string name="pref_sort_search_results_mode_name">По імені</string>
  <string name="pref_sort_search_results_mode_relevance">По актуальності</string>
  <string name="pref_search_privacity_category">Конфіденційності</string>
  <string name="pref_save_search_terms">Зберегти умови пошуку</string>
  <string name="pref_save_search_terms_on">Умови пошуку будуть збережені для подальшого використання як підказки</string>
  <string name="pref_save_search_terms_off">Умови пошуку не будуть зберігатися</string>
  <string name="pref_remove_saved_search_terms">Видалити збережені умови пошуку</string>
  <string name="pref_remove_saved_search_terms_summary">Натисніть для видалення всіх збережених умов пошуку</string>
  <string name="pref_remove_saved_search_terms_msg">Всі збережені умови пошуку були видалені</string>
  <string name="pref_editor_behaviour_category">Поведінка</string>
  <string name="pref_no_suggestions">Без припущень</string>
  <string name="pref_no_suggestions_desc">Не відображити припущення при редагуванні файлів</string>
  <string name="pref_word_wrap">Перенесення слів</string>
  <string name="pref_hexdump">Двійкові файли у HEX</string>
  <string name="pref_hexdump_desc">При відкритті двійкового файлу показувати шістнадцятковий дамп</string>
  <string name="pref_editor_syntax_highlight_category">Підсвітка синтаксису</string>
  <string name="pref_syntax_highlight">Підсвітка синтаксису</string>
  <string name="pref_syntax_highlight_desc">Підсвічувати синтаксис файлу в редакторі (лише при наявному обробникові синтаксису для даного типу)</string>
  <string name="pref_syntax_highlight_color_scheme">Кольорова тема</string>
  <string name="pref_syntax_highlight_color_scheme_desc">Натисніть для вибору кольрової схеми підсвітки синтаксису</string>
  <string name="pref_syntax_sh_use_theme_default">Використовувати типову тему</string>
  <string name="pref_syntax_sh_use_theme_default_desc">Використовувати типову підсвітку синтаксису з поточної теми</string>
  <string name="pref_editor_sh_item_category">Пункти</string>
  <string name="pref_themes_selection_category">Теми</string>
  <string name="pref_themes_set_theme">Застосувати</string>
  <string name="pref_themes_no_preview">Передперегляд не доступний</string>
  <string name="pref_themes_confirmation">Тему успішно встановлено</string>
  <string name="pref_themes_not_found">Тему не знайдено</string>
  <string name="pref_debug_traces">Логування налагодження</string>
  <string name="theme_default_name">Світла тема</string>
  <string name="theme_default_description">Світла тема для файлового менеджера CyanogenMod.</string>
  <string name="themes_author">CyanogenMod</string>
  <string name="drawer_open">Відкрити панель навігації</string>
  <string name="drawer_close">Закрити панель навігації</string>
  <string name="color_picker_alpha_slider_text">Альфа</string>
  <string name="color_picker_current_text">Поточний:</string>
  <string name="color_picker_new_text">Новий:</string>
  <string name="color_picker_color">Колір:</string>
  <string name="ash_reset_color_scheme">Натисніть для відновлення типової кольорової гами</string>
  <string name="ash_text">Текст</string>
  <string name="ash_assignment">Призначення</string>
  <string name="ash_singleline_comment">Однолінійний коментар</string>
  <string name="ash_multiline_comment">Багатолінійний коментар</string>
  <string name="ash_keyword">Ключове слово</string>
  <string name="ash_quoted_string">Цитований рядок</string>
  <string name="ash_variable">Змінна</string>
  <string name="security_warning_extract">Увага!\n\nВидобування архіва з відносними або абсолютними шляхами може пошкодити пристрій шляхом перезапису системних файлів.\n\nВи дісно бажаєте продовжити?</string>
  <string name="changelog_title">Список змін</string>
  <string name="welcome_title">Ласкаво просимо!</string>
  <string name="welcome_msg">Ласкаво просимо до файлового менеджера CyanogenMod.\n\n Цей застосунок допоможе вам отримати доступ до файлової системи і виконувати операції, які можуть вивести з ладу ваш пристрій. Для запобігання цього, він запуститься в безпечному режимі з мінімальними привілеями. \n\n Ви можете отримати доступ до розширених функцій з повними правами в налаштуваннях. Це ваша відповідальність. Переконайтеся, щоб ваші дії не зашкодили файловій системі.\n\nКоманда CyanogenMod\n</string>
</resources>


text:
<!DOCTYPE html>

    <title>CastOffline</title>
    <link rel="stylesheet" href="page1.css" />

			<video></video>
            <audio></audio>


text:
'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.fields = undefined;

exports.default = function (Payment) {
  if (_lodash2.default.find(Payment.fields.type.options, opt => opt.value === 'alipay')) return;
  Payment.fields.type.options.push({ label: 'Alipay', value: 'alipay' });
};

var _lodash = require('lodash');

var _lodash2 = _interopRequireDefault(_lodash);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

const fields = exports.fields = {
  alipay_trade_no: {
    label: 'Alipay Trade No',
    type: String,
    private: true
  },
  alipay_buyer_email: {
    label: 'Alipay Buyer Email',
    type: String,
    private: true
  }
};


text:
<?php

namespace arc\events;

/**
 *	The event object that is passed to each listener. May contain extra information in the 'data' property.
 */
final class Event
{
    /**
     *	May contain extra information for the event listeners, may be any type.
     */
    public $data = null;

    /**
     *	The name of the event. Can be accessed through __get() but not changed.
     */
    private $name = '';

    /**
     *	If set to true will make fire() return false. Cannot be changed once set to true
     *	but can be read through __get().
     */
    private $preventDefault = false;

    /**
     *	@param string $name The name of the event fired.
     *	@param mixed $data Optional. Extra information for this event.
     */
    public function __construct($name, $data = null)
    {
        $this->name = $name;
        $this->data = $data;
    }

    /**
     *	Sets the flag which will make \arc\events::fire() return false. Once set it cannot be unset.
     *	@returns false
     */
    public function preventDefault()
    {
        $this->preventDefault = true;

        return false;
    }

    public function __get($name)
    {
        switch ($name) {
            case 'preventDefault':
                return $this->preventDefault;
                break;
            case 'name':
                return $this->name;
                break;
        }
    }
}


text:
namespace PersistenciaDatos
{
    using System;
    using System.Collections.Generic;

    public partial class hotel
    {
        public hotel()
        {
            this.habitacion = new HashSet<habitacion>();
        }

        public int hotel_id { get; set; }
        public string nombre { get; set; }
        public int estrellas { get; set; }
        public string direccion { get; set; }
        public string ciudad { get; set; }
        public string telefono { get; set; }

        public virtual ICollection<habitacion> habitacion { get; set; }
    }
}


text:
'use strict';

const childprocess = require('child_process');
const path = require('path');
const spawn = childprocess.spawn;

// GZIP_TYPES is the list of file types that can be gzipped.
const GZIP_TYPES = 'css,html,ico,js,json,svg,xml';

// ALWAYS_EXCLUDE is the list of filters to always use for exclusion.
const ALWAYS_EXCLUDE = '\\.git.*|\\.DS_Store';

// HEADER_CACHE_CONTROL is the default cache control header.
const HEADER_CACHE_CONTROL = 'Cache-Control:public,max-age=3600';

// rsync syncs files from the given src to dest
exports.rsync = (src, dest, opts = {}, callback) => {
  const args = [];

  if (opts && opts.exclude) {
    args.push('-x', `${opts.exclude}|${ALWAYS_EXCLUDE}`);
  } else {
    args.push('-x', ALWAYS_EXCLUDE);
  }

  if (opts && opts.dry) {
    args.push('-n');
  }

  if (opts && opts.deleteMissing) {
    args.push('-d');
  }

  const proc = spawn('gsutil', [
    '-o', 'GSUtil:parallel_process_count=8',
    '-o', 'GSUtil:parallel_thread_count=1',
    '-h', HEADER_CACHE_CONTROL,
    '-m',
    'rsync',
      '-c', // compare checksums instead of mtime
      '-C', // continue on error (but exit non-zero at end)
      '-j', GZIP_TYPES, // gzip
      '-r', // recurse
      ...args,
      src, dest
  ], { stdio: 'inherit' });

  proc.on('close', (err) => {
    if (err) {
      throw new Error(err);
    }
    callback();
  });
};

// bucketName returns the normalized bucket arg or defaultValue if bucket is
// blank:
//
// - prepend gs:// if missing
// - remove '/' suffix
exports.bucketName = (bucket, defaultValue) => {
  bucket = bucket || defaultValue;

  if (bucket.substring(0, 5) !== 'gs://') {
    bucket = 'gs://' + bucket;
  }

  bucket = removeTrailingSlash(bucket);

  return bucket;
};

// bucketFilePath is the path in the bucket to the file specified at the given
// path. The path is normalized.
//
// This function exists because path.join() removes the protocol from gs:// and
// doesn't give much control over the trailing slash.
exports.bucketFilePath = (bucket, ...paths) => {
  bucket = removeTrailingSlash(bucket);
  paths = paths.map((p) => {
    return removeTrailingSlash(removeLeadingSlash(p));
  });
  return bucket + '/' + path.join(...paths);
};

// bucketFolderPath is the path in the bucket to the folder specified by the
// given paths.
exports.bucketFolderPath = (bucket, ...paths) => {
  return exports.bucketFilePath(bucket, ...paths) + '/';
};

// removeLeadingSlash removes the trailing slash from a string.
const removeLeadingSlash = (s) => {
  if (s[0] === '/') {
    return s.substring(1, s.length);
  }
  return s;
};

// removeTrailingSlash removes the trailing slash from a string.
const removeTrailingSlash = (s) => {
  if (s[s.length - 1] === '/') {
    return s.substring(0, s.length - 1);
  }
  return s;
};


text:
package com.vaadin.testbench.elements;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

import com.vaadin.testbench.elementsbase.ServerClass;

@ServerClass("com.vaadin.ui.ProgressBar")
public class ProgressBarElement extends AbstractFieldElement {

    /**
     * Retrns the value of the progress bar
     *
     * @return
     */
    public double getValue() {
        WebElement indicator = findElement(
                By.className("v-progressbar-indicator"));
        String width = getStyleAttribute(indicator, "width");
        if (!width.endsWith("%")) {
            return 0;
        }

        return Double.parseDouble(width.replace("%", "")) / 100.0;
    }

}


text:
package com.hyuki.dp.Builder;

import java.io.*;

public class HTMLBuilder extends Builder {
	private String filename; // 作成するファイル名
	private PrintWriter writer; // ファイルに書き込むPrintWriter

	@Override
	protected void buildTitle(String title) { // HTMLファイルでのタイトル
		filename = title + ".html"; // タイトルを元にファイル名決定
		try {
			writer = new PrintWriter(new FileWriter(filename)); // PrintWriterを作る
		} catch (IOException e) {
			e.printStackTrace();
		}
		writer.println("<title>" + title + "</title>"); // タイトルを出力
		writer.println("
" + title + "
");
	}

	@Override
	protected void buildString(String str) { // HTMLファイルでの文字列
		writer.println("
" + str + "
"); //
タグで出力
	}

	@Override
	protected void buildItems(String[] items) { // HTMLファイルでの箇条書き
		writer.println("
"); //
と
で出力
		for (int i = 0; i < items.length; i++) {
			writer.println("
" + items[i] + "
");
		}
		writer.println("
");
	}

	@Override
	protected void buildDone() { // 文書の完成
		writer.println(""); // タグを閉じる
		writer.close(); // ファイルをクローズ
	}

	public String getResult() {
		return filename; // ファイル名を返す
	}

}


text:
module.exports = function (grunt) {

  // build, then zip and upload to s3
  grunt.registerTask('serve', function(target) {
    if (target === 'dist') {
      return grunt.task.run(['build', 'connect:dist:keepalive']);
    }

    grunt.task.run(['clean:server', 'concurrent:server', 'autoprefixer', 'configureProxies:server', 'connect:livereload', 'watch']);
  });
};


text:
package com.digits.sdk.android;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.ResultReceiver;
import android.support.annotation.NonNull;
import android.widget.EditText;

import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.SessionManager;

import java.util.Locale;

import io.fabric.sdk.android.services.common.CommonUtils;

class PhoneNumberController extends DigitsControllerImpl implements
        PhoneNumberTask.Listener {
    private final TosView tosView;
    final CountryListSpinner countryCodeSpinner;
    String phoneNumber;
    boolean voiceEnabled;
    boolean resendState;
    boolean emailCollection;

    PhoneNumberController(ResultReceiver resultReceiver,
                          StateButton stateButton, EditText phoneEditText,
                          CountryListSpinner countryCodeSpinner, TosView tosView,
                          DigitsScribeService scribeService, boolean emailCollection) {
        this(resultReceiver, stateButton, phoneEditText, countryCodeSpinner,
                Digits.getInstance().getDigitsClient(), new PhoneNumberErrorCodes(stateButton
                        .getContext().getResources()),
                Digits.getInstance().getActivityClassManager(), Digits.getSessionManager(),
                tosView, scribeService, emailCollection);
    }

    /**
     * Only for test
     */
    PhoneNumberController(ResultReceiver resultReceiver, StateButton stateButton,
                          EditText phoneEditText, CountryListSpinner countryCodeSpinner,
                          DigitsClient client, ErrorCodes errors,
                          ActivityClassManager activityClassManager,
                          SessionManager<DigitsSession> sessionManager, TosView tosView,
                          DigitsScribeService scribeService, boolean emailCollection) {
        super(resultReceiver, stateButton, phoneEditText, client, errors, activityClassManager,
                sessionManager, scribeService);
        this.countryCodeSpinner = countryCodeSpinner;
        this.tosView = tosView;
        voiceEnabled = false;
        resendState = false;
        this.emailCollection = emailCollection;
    }

    public void setPhoneNumber(PhoneNumber phoneNumber) {
        if (PhoneNumber.isValid(phoneNumber)) {
            editText.setText(phoneNumber.getPhoneNumber());
            editText.setSelection(phoneNumber.getPhoneNumber().length());
        }
    }

    public void setCountryCode(PhoneNumber phoneNumber) {
        if (PhoneNumber.isCountryValid(phoneNumber)) {
            countryCodeSpinner.setSelectedForCountry(new Locale("",
                    phoneNumber.getCountryIso()).getDisplayName(), phoneNumber.getCountryCode());
        }
    }

    @Override
    public void executeRequest(final Context context) {
        scribeRequest();
        if (validateInput(editText.getText())) {
            sendButton.showProgress();
            CommonUtils.hideKeyboard(context, editText);
            final int code = (Integer) countryCodeSpinner.getTag();
            final String number = editText.getText().toString();
            phoneNumber = getNumber(code, number);
            digitsClient.authDevice(phoneNumber, getVerificationType(),
                    new DigitsCallback<AuthResponse>(context, this) {
                        @Override
                        public void success(final Result<AuthResponse> result) {
                            sendButton.showFinish();
                            final AuthConfig config = result.data.authConfig;
                            if (config != null) {
                                voiceEnabled = config.isVoiceEnabled;
                                emailCollection = config.isEmailEnabled && emailCollection;
                            }
                            editText.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    final AuthResponse response = result.data;
                                    phoneNumber = response.normalizedPhoneNumber == null ?
                                            phoneNumber : response.normalizedPhoneNumber;
                                    startSignIn(context, result.data);
                                }
                            }, POST_DELAY_MS);
                        }
                    }
            );

        }
    }

    private void scribeRequest() {
        if (isRetry()) {
            scribeService.click(DigitsScribeConstants.Element.RETRY);
        } else {
            scribeService.click(DigitsScribeConstants.Element.SUBMIT);
        }
    }

    private boolean isRetry() {
        return errorCount > 0;
    }

    @NonNull
    private Verification getVerificationType() {
        return resendState && voiceEnabled ? Verification.voicecall : Verification.sms;
    }

    @Override
    public void handleError(final Context context, DigitsException digitsException) {
        if (digitsException instanceof CouldNotAuthenticateException) {
            digitsClient.registerDevice(phoneNumber, getVerificationType(),
                    new DigitsCallback<DeviceRegistrationResponse>(context, this) {
                        @Override
                        public void success(Result<DeviceRegistrationResponse> result) {
                            final DeviceRegistrationResponse response = result.data;
                            final AuthConfig config = response.authConfig;
                            if (config != null) {
                                voiceEnabled = config.isVoiceEnabled;
                                emailCollection = config.isEmailEnabled && emailCollection;
                            }
                            phoneNumber = response.normalizedPhoneNumber == null ?
                                    phoneNumber : response.normalizedPhoneNumber;
                            sendButton.showFinish();
                            startNextStep(context, result.data);
                        }
                    });
        } else if (digitsException instanceof OperatorUnsupportedException) {
            voiceEnabled = digitsException.getConfig().isVoiceEnabled;
            resend();
            super.handleError(context, digitsException);
        } else {
            super.handleError(context, digitsException);
        }
    }

    @Override
    Uri getTosUri() {
        return DigitsConstants.DIGITS_TOS;
    }

    void startSignIn(Context context, AuthResponse response) {
        scribeService.success();
        final Intent intent = new Intent(context, activityClassManager.getLoginCodeActivity());
        final Bundle bundle = getBundle();
        bundle.putString(DigitsClient.EXTRA_REQUEST_ID, response.requestId);
        bundle.putLong(DigitsClient.EXTRA_USER_ID, response.userId);
        bundle.putParcelable(DigitsClient.EXTRA_AUTH_CONFIG, response.authConfig);
        bundle.putBoolean(DigitsClient.EXTRA_EMAIL, emailCollection);
        intent.putExtras(bundle);
        startActivityForResult((Activity) context, intent);
    }

    private void startNextStep(Context context, DeviceRegistrationResponse response) {
        scribeService.success();
        final Intent intent = new Intent(context, activityClassManager.getConfirmationActivity());
        final Bundle bundle = getBundle();
        bundle.putParcelable(DigitsClient.EXTRA_AUTH_CONFIG, response.authConfig);
        bundle.putBoolean(DigitsClient.EXTRA_EMAIL, emailCollection);
        intent.putExtras(bundle);
        startActivityForResult((Activity) context, intent);
    }

    private Bundle getBundle() {
        final Bundle bundle = new Bundle();
        bundle.putString(DigitsClient.EXTRA_PHONE, phoneNumber);
        bundle.putParcelable(DigitsClient.EXTRA_RESULT_RECEIVER, resultReceiver);
        return bundle;
    }

    private String getNumber(long countryCode, String numberTextView) {
        return "+" + String.valueOf(countryCode) + numberTextView;
    }

    public void onLoadComplete(PhoneNumber phoneNumber) {
        setPhoneNumber(phoneNumber);
        setCountryCode(phoneNumber);
    }

    public void resend() {
        resendState = true;
        if (voiceEnabled) {
            sendButton.setStatesText(R.string.dgts__call_me, R.string.dgts__calling,
                    R.string.dgts__calling);
            tosView.setText(R.string.dgts__terms_text_call_me);
        }
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        super.onTextChanged(s, start, before, count);
        if (Verification.voicecall.equals(getVerificationType())) {
            resendState = false;
            sendButton.setStatesText(R.string.dgts__continue,
                    R.string.dgts__sending,
                    R.string.dgts__done);
            sendButton.showStart();
            tosView.setText(R.string.dgts__terms_text);
        }
    }
}


text:
namespace VRTK.Examples
{
    using UnityEngine;

    public class VRTK_ControllerUIPointerEvents_ListenerExample : MonoBehaviour
    {
        public bool togglePointerOnHit = false;

        private void Start()
        {
            if (GetComponent<VRTK_UIPointer>() == null)
            {
                Debug.LogError("VRTK_ControllerUIPointerEvents_ListenerExample is required to be attached to a Controller that has the VRTK_UIPointer script attached to it");
                return;
            }

            if (togglePointerOnHit)
            {
                GetComponent<VRTK_UIPointer>().activationMode = VRTK_UIPointer.ActivationMethods.AlwaysOn;
            }

            //Setup controller event listeners
            GetComponent<VRTK_UIPointer>().UIPointerElementEnter += VRTK_ControllerUIPointerEvents_ListenerExample_UIPointerElementEnter;
            GetComponent<VRTK_UIPointer>().UIPointerElementExit += VRTK_ControllerUIPointerEvents_ListenerExample_UIPointerElementExit;
            GetComponent<VRTK_UIPointer>().UIPointerElementClick += VRTK_ControllerUIPointerEvents_ListenerExample_UIPointerElementClick;
            GetComponent<VRTK_UIPointer>().UIPointerElementDragStart += VRTK_ControllerUIPointerEvents_ListenerExample_UIPointerElementDragStart;
            GetComponent<VRTK_UIPointer>().UIPointerElementDragEnd += VRTK_ControllerUIPointerEvents_ListenerExample_UIPointerElementDragEnd;
        }

        private void VRTK_ControllerUIPointerEvents_ListenerExample_UIPointerElementEnter(object sender, UIPointerEventArgs e)
        {
            Debug.Log("UI Pointer entered " + e.currentTarget.name + " on Controller index [" + e.controllerIndex + "] and the state was " + e.isActive + " ### World Position: " + e.raycastResult.worldPosition);
            if (togglePointerOnHit && GetComponent<VRTK_Pointer>())
            {
                GetComponent<VRTK_Pointer>().Toggle(true);
            }
        }

        private void VRTK_ControllerUIPointerEvents_ListenerExample_UIPointerElementExit(object sender, UIPointerEventArgs e)
        {
            Debug.Log("UI Pointer exited " + e.previousTarget.name + " on Controller index [" + e.controllerIndex + "] and the state was " + e.isActive);
            if (togglePointerOnHit && GetComponent<VRTK_Pointer>())
            {
                GetComponent<VRTK_Pointer>().Toggle(false);
            }
        }

        private void VRTK_ControllerUIPointerEvents_ListenerExample_UIPointerElementClick(object sender, UIPointerEventArgs e)
        {
            Debug.Log("UI Pointer clicked " + e.currentTarget.name + " on Controller index [" + e.controllerIndex + "] and the state was " + e.isActive + " ### World Position: " + e.raycastResult.worldPosition);
        }

        private void VRTK_ControllerUIPointerEvents_ListenerExample_UIPointerElementDragStart(object sender, UIPointerEventArgs e)
        {
            Debug.Log("UI Pointer started dragging " + e.currentTarget.name + " on Controller index [" + e.controllerIndex + "] and the state was " + e.isActive + " ### World Position: " + e.raycastResult.worldPosition);
        }

        private void VRTK_ControllerUIPointerEvents_ListenerExample_UIPointerElementDragEnd(object sender, UIPointerEventArgs e)
        {
            Debug.Log("UI Pointer stopped dragging " + e.currentTarget.name + " on Controller index [" + e.controllerIndex + "] and the state was " + e.isActive + " ### World Position: " + e.raycastResult.worldPosition);
        }
    }
}


text:
import {Component, View} from 'angular2/angular2';

import {GreeterService} from '../services/greeter';

@Component({
    selector: 'hello',
    properties: ['name'],
    viewInjector: [GreeterService]
})
@View({
    templateUrl: 'templates/hello.html'
})
export class HelloComponent {
    name: string;
    greeter: GreeterService;

    constructor(greeter:GreeterService) {
        this.greeter = greeter;
    }
}


text:
<!DOCTYPE html>

    <title>GURPS CG 4E</title>

      <form action="/" method="post">

          Fill out the following fields and click 'Generate Character'.

          Enter point total (1-600): <input type="text" name="points" value="150">

          Please select TL:
          <select name="Tech Level">

          </select>

          Advantage Type

            <input type="checkbox" name="adv_type" value="-" checked> Mundane (normal)

            <input type="checkbox" name="adv_type" value="X"> Exotic

            <input type="checkbox" name="adv_type" value="Sup"> Supernatural (includes magic)

          Disadvantage Type -- limit: <input type="text" name="d_limit" value="50">

            <input type="checkbox" name="disadv_type" value="-" checked> Mundane (normal)

            <input type="checkbox" name="disadv_type" value="X"> Exotic

            <input type="checkbox" name="disadv_type" value="Sup"> Supernatural (includes magic)

Primary Attribute -- 	Secondary Attribute -- 	Tertiary Attribute

<input type="radio" name="pa" value="ST"> ST	<input type="radio" name="sa" value="ST"> ST	<input type="radio" name="ta" value="ST"> ST

<input type="radio" name="pa" value="DX"> DX	<input type="radio" name="sa" value="DX"> DX	<input type="radio" name="ta" value="DX"> DX

<input type="radio" name="pa" value="IQ"> IQ	<input type="radio" name="sa" value="IQ"> IQ	<input type="radio" name="ta" value="IQ"> IQ

<input type="radio" name="pa" value="HT"> HT	<input type="radio" name="sa" value="HT"> HT	<input type="radio" name="ta" value="HT"> HT

Character Types

          %(cat_checkboxes)s

Spell Schools

          %(spell_checkboxes)s

          <input type="submit" value="Generate Character!">

      </form>

    -----

    GURPS 4th Edition is a trademark of Steve Jackson Games, and its rules and art are copyrighted by Steve
    Jackson Games. All rights are reserved by Steve Jackson Games. This game aid is the original creation of Justin Smith & Dale Hammack and is released for free
    distribution, and not for resale, under the permissions granted in the Steve Jackson Games Online Policy.


text:
<?php

namespace Slick\WebStack\Exception;

use InvalidArgumentException;
use Slick\WebStack\Exception;

/**
 * Routes File Parser Exception
 *
 * @package Slick\WebStack\Exception
 */
class RoutesFileParserException extends InvalidArgumentException implements Exception
{

}


text:
package com.aptoide.iabexample.util;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * Represents an in-app product's listing details.
 */
public class SkuDetails {
    private final String mItemType;
    private final String mSku;
    private final String mType;
    private final String mPrice;
    private final long mPriceAmountMicros;
    private final String mPriceCurrencyCode;
    private final String mTitle;
    private final String mDescription;
    private final String mJson;

    public SkuDetails(String jsonSkuDetails) throws JSONException {
        this(IabHelper.ITEM_TYPE_INAPP, jsonSkuDetails);
    }

    public SkuDetails(String itemType, String jsonSkuDetails) throws JSONException {
        mItemType = itemType;
        mJson = jsonSkuDetails;
        JSONObject o = new JSONObject(mJson);
        mSku = o.optString("productId");
        mType = o.optString("type");
        mPrice = o.optString("price");
        mPriceAmountMicros = o.optLong("price_amount_micros");
        mPriceCurrencyCode = o.optString("price_currency_code");
        mTitle = o.optString("title");
        mDescription = o.optString("description");
    }

    public String getSku() { return mSku; }
    public String getType() { return mType; }
    public String getPrice() { return mPrice; }
    public long getPriceAmountMicros() { return mPriceAmountMicros; }
    public String getPriceCurrencyCode() { return mPriceCurrencyCode; }
    public String getTitle() { return mTitle; }
    public String getDescription() { return mDescription; }

    @Override
    public String toString() {
        return "SkuDetails:" + mJson;
    }
}


text:
<!DOCTYPE html>

		<meta charset="utf-8" />
		<base href="../../../../" />

		<link type="text/css" rel="stylesheet" href="page.css" />

[name]

The Webglrenderer plugin class that allows Sprites to be rendered in the WebglRenderer. This plugin is automatically loaded in the Webglrenderer.

Constructor

[name]()

		Creates a new [name].

Methods

[method:null render]( [param:Scene scene], [param:Camera camera] )

		scene -- The scene to render.

		camera -- The camera to render.

		Renders the sprites defined in the scene. This gets automatically called as post-render function to draw the lensflares.

Source

		[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]


text:
CryptTime-PHP
=========
[![Build Status](https://travis-ci.org/kittinan/CryptTime-PHP.svg?branch=master)](https://travis-ci.org/kittinan/CryptTime-PHP)
[![Coverage Status](https://coveralls.io/repos/kittinan/CryptTime-PHP/badge.png?branch=master)](https://coveralls.io/r/kittinan/CryptTime-PHP?branch=master)
[![License](https://poser.pugx.org/kittinan/crypt-time-php/license.svg)](https://packagist.org/packages/kittinan/crypt-time-php)

CryptTime-PHP is a simple class to encrypt string with timeout. the encryption use AES128/PKCS7.

## Requirement
* PHP 5.3+
* php-mcrypt

## Composer
This plugin on the Packagist.

[https://packagist.org/packages/kittinan/crypt-time-php](https://packagist.org/packages/kittinan/crypt-time-php)

## Quick Start.
```php

$plainText = 'Hello World';

$cryptTime = \KS\CryptTime::getInstance();

$cipherText = $cryptTime->encrypt($plainText);  //Default timeout is 86400 seconds (1 day)

$decryptText = $cryptTime->decrypt($cipherText);

```

if you want to encrypt string with 10 minutes timeout.
```php

$plainText = 'Hello World';

$cryptTime = \KS\CryptTime::getInstance();

$cipherText = $cryptTime->encrypt($plainText, 600);  //10 minutes = 600 seconds

$decryptText = $cryptTime->decrypt($cipherText);
```

you can set IV and Key
```php

$cryptTime = \KS\CryptTime::getInstance();
$cryptTime->setIV('MyNewInitialValue');
$cryptTime->setKey('MyNewKeyMyNewKeyMyNewKey');
```

License
=======
The MIT License (MIT)


text:
/*!
    view.cpp

    Provides a view to represent a one-dimensional sequence of integers
    obtained from a list model as a series of rows.
*/

#include <QAbstractItemModel>
#include <QBrush>
#include <QItemSelection>
#include <QPainter>
#include <QPaintEvent>
#include <QPen>
#include <QPoint>
#include <QResizeEvent>
#include <QScrollBar>
#include <QSizePolicy>

#include "view.h"

LinearView::LinearView(QWidget *parent)
    : QAbstractItemView(parent)
{
    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
}

/*!
    Returns the position of the item in viewport coordinates.
*/

QRect LinearView::itemViewportRect(const QModelIndex &index) const
{
    QRect rect = itemRect(index);
    QRect result(rect.left() - horizontalScrollBar()->value(),
                 rect.top() - verticalScrollBar()->value(),
                 rect.width(), viewport()->height());

    return result;
}

/*!
    Returns the rectangle of the item at position \a index in the
    model. The rectangle is in contents coordinates.
*/

QRect LinearView::itemRect(const QModelIndex &index) const
{
    if (!index.isValid())
        return QRect();
    else
        return QRect(index.row(), 0, 1, 1);
}

void LinearView::ensureVisible(const QModelIndex &index)
{
    QRect area = viewport()->rect();
    QRect rect = itemViewportRect(index);

    if (rect.left() < area.left())
        horizontalScrollBar()->setValue(
            horizontalScrollBar()->value() - rect.left());
    else if (rect.right() > area.right())
        horizontalScrollBar()->setValue(
            horizontalScrollBar()->value() + rect.left() - area.width());
}

/*!
    Returns the item that covers the coordinate given in the view.
*/

QModelIndex LinearView::itemAt(int x, int /* y */) const
{
    int row = x + horizontalScrollBar()->value();

    return model()->index(row, 0, QModelIndex());
}

//void LinearView::dataChanged(const QModelIndex &/* topLeft */,
//    const QModelIndex &/* bottomRight */)
//{
//    updateGeometries();
//    if (isVisible())
//        repaint();
//}

void LinearView::rowsInserted(const QModelIndex &/* parent */, int /* start */,
    int /* end */)
{
    updateGeometries();
    if (isVisible())
        repaint();
}

void LinearView::rowsRemoved(const QModelIndex &/* parent */, int /* start */,
    int /* end */)
{
    updateGeometries();
    if (isVisible())
        repaint();
}
/*
void LinearView::verticalScrollbarAction(int action)
{
}

void LinearView::horizontalScrollbarAction(int action)
{
}
*/

/*!
    Select the items in the model that lie within the rectangle specified by
    \a rect, using the selection \a command.
*/

void LinearView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command)
{
    QModelIndex leftIndex = itemAt(rect.left(), 0);
    QModelIndex rightIndex = itemAt(rect.right(), 0);

    QItemSelection selection(leftIndex, rightIndex);

    selectionModel()->select(selection, command);
}

QModelIndex LinearView::moveCursor(QAbstractItemView::CursorAction cursorAction,
                                   Qt::KeyboardModifiers)
{
    QModelIndex current = currentIndex();

    switch (cursorAction) {
    case MoveLeft:{
        if (current.row() > 0)
            return model()->index(current.row() - 1, 0, QModelIndex());
        else
            return model()->index(0, 0, QModelIndex());
        break;}
    case MoveRight:{
        if (current.row() < rows(current) - 1)
            return model()->index(current.row() + 1, 0, QModelIndex());
        else
            return model()->index(rows(current) - 1, 0,QModelIndex());
        break;}
    case MoveUp:
        return current;
    case MoveDown:
        return current;
    case MovePageUp:
        return current;
    case MovePageDown:
        return current;
    case MoveHome:
        return model()->index(0, 0, QModelIndex());
    case MoveEnd:
        return model()->index(rows(current) - 1, 0, QModelIndex());
    default:
        return current;
    }
}

int LinearView::horizontalOffset() const
{
    return horizontalScrollBar()->value();
}

int LinearView::verticalOffset() const
{
    return verticalScrollBar()->value();
}

/*!
    Returns a rectangle corresponding to the selection in viewport cooridinates.
*/

QRect LinearView::selectionViewportRect(const QItemSelection &selection) const
{
    int ranges = selection.count();

    if (ranges == 0)
        return QRect();

    // Note that we use the top and bottom functions of the selection range
    // since the data is stored in rows.

    int firstRow = selection.at(0).top();
    int lastRow = selection.at(0).top();

    for (int i = 0; i < ranges; ++i) {
        firstRow = qMin(firstRow, selection.at(i).top());
        lastRow = qMax(lastRow, selection.at(i).bottom());
    }

    QModelIndex firstItem = model()->index(qMin(firstRow, lastRow), 0,
        QModelIndex());
    QModelIndex lastItem = model()->index(qMax(firstRow, lastRow), 0,
        QModelIndex());

    QRect firstRect = itemViewportRect(firstItem);
    QRect lastRect = itemViewportRect(lastItem);

    return QRect(firstRect.left(), firstRect.top(),
        lastRect.right() - firstRect.left(), firstRect.height());
}

void LinearView::paintEvent(QPaintEvent *event)
{
    QPainter painter(viewport());

    QRect updateRect = event->rect();
    QBrush background(Qt::black);
    QPen foreground(Qt::white);

    painter.fillRect(updateRect, background);
    painter.setPen(foreground);

    QModelIndex firstItem = itemAt(updateRect.left(), updateRect.top());
    if (!firstItem.isValid())
        firstItem = model()->index(0, 0, QModelIndex());

    QModelIndex lastItem = itemAt(updateRect.right(), updateRect.bottom());
    if (!lastItem.isValid())
        lastItem = model()->index(rows() - 1, 0, QModelIndex());

    int x = updateRect.left();
    //int top = updateRect.top();
    //int bottom = updateRect.bottom();

    int row = firstItem.row();
    QModelIndex index = model()->index(row, 0, QModelIndex());
    int value = model()->data(index, Qt::DisplayRole).toInt();
    int midPoint = viewport()->height()/2;
    int y2 = midPoint - int(value * midPoint/255.0);

    while (row <= lastItem.row()) {

        QModelIndex index = model()->index(row, 0, QModelIndex());
        int value = model()->data(index, Qt::DisplayRole).toInt();

        int y1 = y2;
        y2 = midPoint - int(value * midPoint/255.0);

        painter.drawLine(x-1, y1, x, y2);
        ++row; ++x;
    }
}

void LinearView::resizeEvent(QResizeEvent * /* event */)
{
    updateGeometries();
}

void LinearView::updateGeometries()
{
    if (viewport()->width() < rows()) {
        horizontalScrollBar()->setPageStep(viewport()->width());
        horizontalScrollBar()->setRange(0, rows() - viewport()->width() - 1);
    }
}

QSize LinearView::sizeHint() const
{
    return QSize(rows(), 200);
}

int LinearView::rows(const QModelIndex &index) const
{
    return model()->rowCount(model()->parent(index));
}

bool LinearView::isIndexHidden(const QModelIndex &index) const
{
    return false;
}