text:
"""Android code execution worker.

A deployment will have n >= 1 worker machines. This worker runs on each of them,
along with server.py. server.py is a webserver; this script handles all Android
operations (build, execution, etc.). It also handles setup and configuration of
the worker machine's environment.

Currently n > 1 workers is not supported.

This is a proof-of-concept implementation and it has many shortcomings:

1. Full support for multiple running emulators is not done yet, and attempting
   to use different emulators will cause hangs. For now, the fix is to use the
   same emulator settings for each entry in runtimes/config.json, which limits
   max concurrent requests to 1, and we don't do any locking so requests running
   at the same time will race. Long term fix is to delegate the emulator name
   and port to all commands, including gradle, then to make the server
   multithreaded and to dispatch concurrent requests to different emulators.
2. Starting emulators happens serially, which is very slow, and we should
   parallelize this.
3. Only 64-bit Linux is currently supported, and only running the 32-bit
   Android toolchain. This is weird; the reason is that the 64-bit toolchain
   requires x86 emulation, which in turn requires KVM support.
4. We run Android code in a VM, so the host machine must support nested VMs or
   performance will be abysmal. The fix for this, and for the 64-bit issue, is
   to run under KVM.
5. Output in the success case is a screenshot. Ideally, it would be an
   interactive emulator session.
6. We do a full compile, apk load, and test run on each test invocation. This
   takes ~30s when running natively and ~45s under emulation. This could be
   improved substantially by being more incremental, and the emulation penalty
   could be decreased with KVM.
7. The test patch implementation assumes only one file is being edited. It could
   be trivially extended to support n >= 0 patches.
8. In headless mode we still rely on the shell having a DISPLAY var set and we
   die if it is missing. We should remove this dependency and only require
   DISPLAY when headed.

Steps for running a worker on AWS:

1. Launch Ubuntu Server 14.04 LTS 64-bit (ami-3d50120d) via
   http://console.aws.amazon.com. Set type to something with 40+ GB of storage.
   You may wish to use other storage options (e.g. for durability between
   instance restarts) in which case you will need to mount them to /mnt or use a
   different mount point in step 5, below.
2. Create a security group permitting custom TCP traffic on port 8080 and source
   Anywhere. Apply it to your instance.
3. ssh -X -i <key.pem> ubuntu@<public_dns> where
   * key.pem is the key file you downloaded from AWS
   * public_dns is the Public DNS of the instance in the EC2 console.
   Be sure to use -X; this sets the shell's DISPLAY var correctly.
4. sudo dpkg --add-architecture i386 && \
       sudo apt-get update && \
       sudo apt-get install \
           git \
           libgcc1:i386 \
           lib32ncurses5 \
           lib32stdc++6 \
           lib32z1 \
           openjdk-7-jdk \
           openjdk-7-jre \
           unzip
5. sudo mkdir -p /usr/local/cacm && \
       sudo chown ubuntu /usr/local/cacm && \
       cd /usr/local/cacm
6. git clone https://github.com/google/coursebuilder-android-container-module \
       && cd coursebuilder-android-container-module
7. python android/worker.py
8. sh android/get_aws_public_hostname.sh
8. python android/server.py --host $(cat android/.aws_public_hostname)

Your worker can now be reached by a FE for REST operations. If you want to put
it behind a balancer like ELB, do an HTTP health check against /health and
expect a 200 if the instance can accept requests to start running new jobs.
Determining the number of workers you need is straightforward: each worker can
handle many concurrent requests for past results, but only one request at a time
for executing a new job.
"""

import argparse
import base64
import datetime
import json
import logging
import md5
import multiprocessing
import os
import re
import shutil
import subprocess
import sys
import time

ROOT_PATH = os.path.abspath(os.path.dirname(__file__))

_ACCEPT_LICENSE_NEEDLE = 'Do you accept the license'
_ANDROID_HOME = 'ANDROID_HOME'
_ANDROID_SDK_HOME = 'ANDROID_SDK_HOME'
_BOOT_ANIMATION_STOPPED = 'stopped\r'
_BOOT_ANIMATION_PROPERTY = 'init.svc.bootanim'
_CLEAN_ALL = 'all'
_CLEAN_EMULATORS = 'emulators'
_CLEAN_LOCAL = 'local'
_CLEAN_PYC = 'pyc'
_CLEAN_RESOURCES = 'resources'
_CLEAN_RESULTS = 'results'
_CLEAN_RUNTIMES = 'runtimes'
_CLEAN_CHOICES = [
    _CLEAN_ALL,
    _CLEAN_EMULATORS,
    _CLEAN_LOCAL,  # All but resources.
    _CLEAN_PYC,
    _CLEAN_RESOURCES,
    _CLEAN_RESULTS,
    _CLEAN_RUNTIMES,
]
_DISPLAY = 'DISPLAY'
_EMULATOR = 'emulator'
_GRADLEW_INSTALL_SUCCESS_NEEDLE = 'BUILD SUCCESSFUL'
LOG_DEBUG = 'DEBUG'
LOG_ERROR = 'ERROR'
LOG_INFO = 'INFO'
LOG_WARNING = 'WARNING'
LOG_LEVEL_CHOICES = [
    LOG_DEBUG,
    LOG_ERROR,
    LOG_INFO,
    LOG_WARNING,
]
_LOG = logging.getLogger('android.worker')
_TEST_FAILURE_NEEDLE = 'FAILURES!!!\r'

_PROJECTS_PATH = os.path.join(ROOT_PATH, 'projects')
_PROJECTS_CONFIG = os.path.join(_PROJECTS_PATH, 'config.json')
_RESOURCES_PATH = os.path.join(ROOT_PATH, 'resources')
_RESOURCES_TMP_PATH = os.path.join(_RESOURCES_PATH, 'tmp')
_RESULT_IMAGE_NAME = 'result.jpg'
_RESULT_JSON_NAME = 'result.json'
_RESULTS_PATH = os.path.join(ROOT_PATH, 'results')
_RESULTS_TTL_SEC = 60 * 30
_RUNTIMES_PATH = os.path.join(ROOT_PATH, 'runtimes')
_RUNTIMES_CONFIG = os.path.join(_RUNTIMES_PATH, 'config.json')

_PARSER = argparse.ArgumentParser()
_PARSER.add_argument(
    '--clean', type=str, choices=_CLEAN_CHOICES,
    help='Remove entities created by worker.py')
_PARSER.add_argument(
    '--log_level', type=str, choices=LOG_LEVEL_CHOICES, default=LOG_INFO,
    help='Display log messages at or above this level')
_PARSER.add_argument(
    '--show_emulator', action='store_true',
    help='Pass to display the emulator rather than run it headless')
_PARSER.add_argument(
    '--stop', action='store_true', help='Stop running emulators')
_PARSER.add_argument(
    '--test', type=str, help='Name of the project to run the tests for')

def configure_logger(log_level, log_file=None):
    logging.basicConfig(filename=log_file, level=log_level)

def main(args):
    configure_logger(args.log_level)
    config = Config.load()

    if args.clean:
        _clean(args.clean, config.projects, config.runtimes)
    elif args.stop:
        _stop(config.runtimes)
    elif args.test:
        _test(
            args.test, config.projects.get(args.test),
            config.runtimes.get(args.test), strict=True)
    else:
        _ensure_resources_dirs_exist()
        _ensure_sdk_installed()
        _ensure_runtimes_exist(config.runtimes)
        _ensure_projects_exist(config.projects)
        _build_all(config.projects)  # Warm the build.
        _ensure_emulators_running_and_ready(
            config.runtimes, headless=not args.show_emulator)
        _install_packages(config.projects)

def fork_test(config, project_name, ticket, patches=None):
    # Runs a test in a fork; returns PID if test starts else None.
    child = multiprocessing.Process(
        target=run_test, args=(config, project_name, ticket),
        kwargs={'patches': patches})
    child.daemon = True
    child.start()
    return child.pid

def run_test(config, project_name, ticket, patches=None):
    patches = patches if patches else []
    test_env = _TestEnvironment(ticket)
    test_env.set_up()  # All exit points from this fn must call tear_down().
    test_run = TestRun()

    if not patches:
        return _run_test_failure(
            test_env, test_run, ticket, 'Must specify test patches',
            TestRun.CONTENTS_MALFORMED)

    src_project = config.get_project(project_name)
    if not src_project:
        return _run_test_failure(
            test_env, test_run, ticket,
            'Unable to find project named ' + project_name,
            TestRun.PROJECT_MISCONFIGURED)

    runtime = config.get_runtime(project_name)
    if not runtime:
        return _run_test_failure(
            test_env, test_run, ticket,
            'Unable to find runtime for project named ' + project_name,
            TestRun.RUNTIME_MISCONFIGURED)

    try:
        Lock.get(ticket)
        test_env.set_up_projects(patches, src_project)
        _LOG.info('Begin test run of project ' + test_env.test_project.name)
        test_run = TestRun()
        test_run.set_status(TestRun.TESTS_RUNNING)
        test_env.save(test_run)
        test_run = _test(
            test_env.test_project.name, test_env.test_project, runtime,
            strict=False)
        _LOG.info('End test run of project ' + test_env.test_project.name)
        test_env.save(test_run)
        return ticket
    except LockError:
        return _run_test_failure(
            test_env, test_run, ticket, 'Worker busy', TestRun.UNAVAILABLE)
    finally:
        test_env.tear_down()
        # Since we unlock after tear_down, which restores the logger, result dir
        # logs will not contain an entry for the lock release. However, the main
        # server log will.
        Lock.release()

def _run_test_failure(test_env, test_run, ticket, payload, status):
    test_run.set_payload(payload)
    test_run.set_status(status)
    test_env.save(test_run)
    test_env.tear_down()
    return ticket

class Config(object):

    def __init__(self, projects, runtimes):
        self.projects = projects
        self.runtimes = runtimes

    def get_project(self, name):
        return self.projects.get(name)

    def get_runtime(self, project_name):
        return self.runtimes.get(project_name)

    @classmethod
    def load(cls):
        projects = _read_json(_PROJECTS_CONFIG)
        runtimes = _read_json(_RUNTIMES_CONFIG)
        return cls(
            {k: _Project.from_config(k, v) for k, v in projects.iteritems()},
            {k: _Runtime.from_config(k, v) for k, v in runtimes.iteritems()})

class Error(Exception):
    """Base error class."""

class LockError(Error):
    """Raised when a lock operation fails."""

class Lock(object):
    """Persistent lock to prevent concurrent requests on one worker."""

    _PATH = os.path.join(ROOT_PATH, '.lock')

    def __init__(self):
        super(Lock, self).__init__()
        assert False, 'Instantiation not supported'

    @classmethod
    def active(cls):
        return os.path.exists(cls._PATH)

    @classmethod
    def get(cls, ticket):
        if cls.active():
            raise LockError('Lock already active')

        contents = str(ticket)

        with open(cls._PATH, 'w') as f:
            f.write(contents)

        _LOG.info('Acquired execution lock with ticket ' + contents)

    @classmethod
    def release(cls):
        if not cls.active():
            raise LockError('Lock not active')

        contents = str(cls.value())
        os.remove(cls._PATH)
        _LOG.info('Released execution lock with ticket ' + contents)

    @classmethod
    def value(cls):
        if not cls.active():
            return None

        with open(cls._PATH) as f:
            return f.read().strip()

class Patch(object):

    def __init__(self, filename, contents):
        self.contents = contents
        self.filename = filename

class TestRun(object):

    BUILD_FAILED = 'build_failed'
    BUILD_SUCCEEDED = 'build_succeeded'
    CONTENTS_MALFORMED = 'contents_malformed'
    NOT_FOUND = 'not_found'
    PROJECT_MISCONFIGURED = 'project_misconfigured'
    RUNTIME_MISCONFIGURED = 'runtime_misconfigured'
    RUNTIME_NOT_RUNNING = 'runtime_not_running'
    TESTS_FAILED = 'tests_failed'
    TESTS_RUNNING = 'tests_running'
    TESTS_SUCCEEDED = 'tests_succeeded'
    UNAVAILABLE = 'unavailable'
    STATUSES = frozenset((
        BUILD_FAILED,
        BUILD_SUCCEEDED,
        CONTENTS_MALFORMED,
        NOT_FOUND,
        PROJECT_MISCONFIGURED,
        RUNTIME_MISCONFIGURED,
        RUNTIME_NOT_RUNNING,
        TESTS_FAILED,
        TESTS_RUNNING,
        TESTS_SUCCEEDED,
        UNAVAILABLE,
    ))

    def __init__(self):
        self._payload = None
        self._status = None

    def get_payload(self):
        return self._payload

    def get_status(self):
        return self._status

    def set_payload(self, value):
        self._payload = value

    def set_status(self, value):
        if value not in self.STATUSES:
            raise ValueError(
                'Value %s invalid; choices are %s' % (
                value, ', '.join(sorted(self.STATUSES))))

        self._status = value

    def to_dict(self):
        return {
            'payload': self.get_payload(),
            'status': self.get_status(),
        }

def _build_all(projects):
    for project in projects.values():
        project.build()

def _clean(clean, projects, runtimes):
    # Emulators depend on projects and runtimes; do them first.
    if clean in (_CLEAN_ALL, _CLEAN_EMULATORS, _CLEAN_LOCAL):
        _clean_emulators(projects, runtimes)

    if clean in (_CLEAN_ALL, _CLEAN_LOCAL, _CLEAN_RESULTS):
        _clean_results()

    if clean in (_CLEAN_ALL, _CLEAN_LOCAL, _CLEAN_RUNTIMES):
        _clean_runtimes(runtimes)

    # We can clean most accurately if we still have the SDK, so save cleaning it
    # up for the end.
    if clean in (_CLEAN_ALL, _CLEAN_RESOURCES):
        _clean_resources()

    # Finally, .pyc files because they could be created by other cleanup code.
    if clean in (_CLEAN_ALL, _CLEAN_LOCAL, _CLEAN_PYC):
        _clean_pyc()

def _clean_emulators(projects, strict=False):
    for project in projects.values():
        project.uninstall(strict=strict)

def _clean_pyc():
    count = 0
    for root, _, files in os.walk(ROOT_PATH):
        for path in files:
            if os.path.splitext(path)[1] == '.pyc':
                os.remove(os.path.join(root, path))
                count += 1

    _LOG.info('Removed %s .pyc file%s', count, 's' if count != 1 else '')

def _clean_results():
    if os.path.exists(_RESULTS_PATH):
        shutil.rmtree(_RESULTS_PATH)
        _LOG.info('Removed results directory %s', _RESULTS_PATH)

def _clean_resources():
    if os.path.exists(_RESOURCES_PATH):
        shutil.rmtree(_RESOURCES_PATH)
        _LOG.info('Removed resources directory %s', _RESOURCES_PATH)

def _clean_runtimes(runtimes):
    for runtime in runtimes.values():
        runtime.clean()

def _die(message):
    _LOG.critical(message)
    sys.exit(1)

def _ensure_emulators_running_and_ready(runtimes, headless=True):
    # TODO(johncox): serial and slow; parallelize if we have many runtimes.
    for runtime in runtimes.values():
        if runtime.ready():
            _LOG.info(
                    'Emulator for runtime %s already ready on port %s; reusing',
                    runtime.project_name, runtime.port)
        else:
            runtime.start(headless=headless)
            _LOG.info(
                'Emulator for runtime %s not ready; waiting',
                runtime.project_name)
            runtime.block_until_ready()
            _LOG.info('Runtime %s emulator ready', runtime.project_name)

def _ensure_projects_exist(projects):
    for project in projects.values():
        if not project.exists():
            _die(
                'Project %s does not exist at %s; aborting', project.name,
                project_path)

def _ensure_runtimes_exist(runtimes):
    for runtime in runtimes.values():
        if runtime.exists():
            _LOG.info(
                'Runtime %s exists at %s; skipping', runtime.project_name,
                runtime.path)
        else:
            _LOG.info(
                'Runtime %s missing or in inconsistent state; re-creating',
                runtime.project_name)
            runtime.clean()
            runtime.create()

def _ensure_resources_dirs_exist():
    if not os.path.exists(_RESOURCES_PATH):
        os.mkdir(_RESOURCES_PATH)
        _LOG.info('Created resources directory %s', _RESOURCES_PATH)
    else:
        _LOG.info('Using existing resources directory %s', _RESOURCES_PATH)

    if not os.path.exists(_RESOURCES_TMP_PATH):
        os.mkdir(_RESOURCES_TMP_PATH)
        _LOG.info('Created resources temp directory %s', _RESOURCES_TMP_PATH)
    else:
        _LOG.info(
            'Using existing resources temp directory %s', _RESOURCES_TMP_PATH)

def _ensure_sdk_installed():
    if not _Sdk.is_installed():
        _Sdk.install()
    else:
        _LOG.info('Using existing SDK at %s', _Sdk.PATH)

def _get_fingerprint(value):
    return md5.new(value).hexdigest()

def _get_project_runtime_iter(projects, runtimes):
    """Gets iterator over (project, runtime) pairs ordered by project name."""
    assert len(projects) == len(runtimes)
    projects = sorted(projects.values(), key=lambda p: p.name)
    runtimes = sorted(runtimes.values(), key=lambda r: r.project_name)

    return ((project, runtime) for project, runtime in zip(projects, runtimes))

def _get_strict_handler(strict):
    return _die if strict else _LOG.info

def _install_packages(projects):
    for project in projects.values():
        project.install()

def _read_json(path):
    with open(path) as f:
        try:
            return json.loads(f.read())
        except:  # Treat all errors the same. pylint: disable=bare-except
            _LOG.error(
                'Unable to load json from %s; file broken or json malformed',
                path)

def _run(command_line, cwd=None, env=None, proc_fn=None, strict=True):
    env = env if env is not None else {}

    result = []
    _LOG.debug('Running command: ' + ' '.join(command_line))
    proc = subprocess.Popen(
        command_line, cwd=cwd, env=env, stderr=subprocess.PIPE,
        stdin=subprocess.PIPE, stdout=subprocess.PIPE)

    if proc_fn:
        proc_fn(proc)

    got_stdout, got_stderr = proc.communicate()

    if got_stdout:
        for line in got_stdout.split('\n'):
            result.append(line)

    if got_stderr:
        for line in got_stderr.split('\n'):
            result.append(line)

    if proc.returncode != 0 and strict:
        _die(
            'Error running command "%s":\n%s' % (
                ' '.join(command_line), '\n'.join(result)))

    return proc.returncode, result

def _stop(runtimes):
    for runtime in runtimes.values():
        runtime.stop()

def _test(name, project, runtime, strict=False):
    """Run a project's tests, either under worker.py or under a web caller."""

    handler = _get_strict_handler(strict)
    test_run = TestRun()

    if not project:
        handler('Unable to find project named %s; aborting' % name)
        test_run.set_status(TestRun.PROJECT_MISCONFIGURED)
        return test_run

    if not runtime:
        handler('Unable to find runtime named %s; aborting' % name)
        test_run.set_status(TestRun.RUNTIME_MISCONFIGURED)
        return test_run

    if not runtime.ready():
        handler('Runtime %s not running; aborting' % name)
        test_run.set_status(TestRun.RUNTIME_NOT_RUNNING)
        return test_run

    build_succeeded, build_result = project.install()

    if not build_succeeded:
        test_run.set_status(TestRun.BUILD_FAILED)
        test_run.set_payload('\n'.join(build_result))
        return test_run

    test_run.set_status(TestRun.BUILD_SUCCEEDED)
    test_succeeded, test_result = project.test()

    if not test_succeeded:
        test_run.set_status(TestRun.TESTS_FAILED)
        test_run.set_payload('\n'.join(test_result))
        return test_run

    test_run.set_status(TestRun.TESTS_SUCCEEDED)
    test_run.set_payload(test_result)
    _LOG.info('Tests succeeded for project %s', name)
    return test_run

class _Project(object):

    def __init__(
            self, name, editor_file, package, path, test_class, test_package):
        self.editor_file = editor_file
        self.name = name
        self.package = package
        self.path = path
        self.test_class = test_class
        self.test_package = test_package

    @classmethod
    def from_config(cls, key, value):
        return cls(
            key, os.path.join(_PROJECTS_PATH, key, value['editorFile']),
            value['package'], os.path.join(_PROJECTS_PATH, key),
            value['testClass'], value['testPackage'])

    def build(self, strict=False):
        handler = _get_strict_handler(strict)
        code, result = _run(
            [self._get_gradlew(), 'build'], cwd=self.path,
            env=_Sdk.get_shell_env(), strict=False)

        if code:
            handler(
                'Build for project %s failed; result: %s' % (
                    self.name, '\n'.join(result)))
            return False, result

        _LOG.info('Project %s built', self.name)
        return True, result

    def exists(self):
        return os.path.exists(self.path)

    def install(self):
        """Install packages under worker.py and external callers."""

        _, result = _run(
            [self._get_gradlew(), 'installDebug'], cwd=self.path,
            env=_Sdk.get_shell_env(), strict=False)

        if self._gradlew_failed(result):
            message = (
                'Unable to build and install debug package from Project %s; '
                'error:\n%s') % (self.name, '\n'.join(result))
            _LOG.error(message)
            return False, result

        else:
            _LOG.info('Installed debug package from Project %s', self.name)

        _, result = _run(
            [self._get_gradlew(), 'installDebugTest'], cwd=self.path,
            env=_Sdk.get_shell_env(), strict=False)

        if self._gradlew_failed(result):
            message = (
                'Unable to build and install debug test package from Project '
                '%s; error:\n%s') % (self.name, '\n'.join(result))
            _LOG.error(message)
            return False, result

        else:
            _LOG.info('Installed debug test package from Project %s', self.name)

        return (
            True,
            [('Debug and test debug packages installed from Project '
              '%s') % self.name])

    def patch(self, patch):
        """Apply a patch to the project's filesystem."""

        if not os.path.exists(patch.filename):
            _die('Unable to apply patch; no file named ' + patch.filename)

        with open(patch.filename, 'w') as f:
            f.write(patch.contents)

        _LOG.debug(
            'Patched file %s with contents fingerprint %s',
            patch.filename, _get_fingerprint(patch.contents))

    def test(self):
        """Runs tests under worker.py and external callers."""

        _, result = _run([
            _Sdk.get_adb(), 'shell', 'am', 'instrument', '-w', '-e', 'class',
            self.test_class,
            '%s/android.test.InstrumentationTestRunner' % self.test_package])

        if self._tests_failed(result):
            message = 'Tests failed for project %s; result:\n%s' % (
                self.name, '\n'.join(result))
            _LOG.error(message)
            return False, result

        else:
            _LOG.info('Tests passed for project %s', self.name)

        return True, self._get_b64encoded_image()

    def uninstall(self, strict=False):
        """Uninstall packages under worker.py only."""

        handler = _get_strict_handler(strict)
        _, result = _run(
            [self._get_gradlew(), 'uninstallDebugTest'], cwd=self.path,
            env=_Sdk.get_shell_env(), strict=False)

        if self._gradlew_failed(result):
            handler(
                ('Unable to uninstall debug test package from Project '
                 '%s') % self.name)
        else:
            _LOG.info(
                'Uninstalled debug test package from Project %s', self.name)

        _, result = _run(
            [self._get_gradlew(), 'uninstallDebug'], cwd=self.path,
            env=_Sdk.get_shell_env(), strict=False)

        if self._gradlew_failed(result):
            handler(
                'Unable to uninstall debug package for Project %s' % self.name)
        else:
            _LOG.info('Uninstalled debug package from Project %s', self.name)

    def _get_b64encoded_image(self):
        local_path = os.path.join(self.path, _RESULT_IMAGE_NAME)
        _run([
            _Sdk.get_adb(), 'pull',
            os.path.join('/sdcard/Robotium-screenshots/', _RESULT_IMAGE_NAME),
            os.path.join(self.path, _RESULT_IMAGE_NAME)])

        with open(local_path) as f:
            return base64.b64encode(f.read())

    def _get_gradlew(self):
        return os.path.join(self.path, 'gradlew')

    def _gradlew_failed(self, result):
        return _GRADLEW_INSTALL_SUCCESS_NEEDLE not in result

    def _tests_failed(self, result):
        return _TEST_FAILURE_NEEDLE in result

class _Runtime(object):

    _DEVICE_TMP = '/data/local/tmp'

    def __init__(self, project_name, path, avd, port, sdcard, sdcard_size):
        self.avd = avd
        self.path = path
        self.port = port
        self.project_name = project_name
        self.sdcard = sdcard
        self.sdcard_size = sdcard_size

    @classmethod
    def from_config(cls, key, value):
        return cls(
            key, os.path.join(_RUNTIMES_PATH, key),
            os.path.join(_RUNTIMES_PATH, key, value['avd']),
            str(value['port']), os.path.join(_RUNTIMES_PATH, key,
            value['sdcard']), value['sdcardSize'])

    def block_until_ready(self, interval_msec=1000, timeout_sec=60*10):
        start = datetime.datetime.utcnow()

        while not self.ready():
            now = datetime.datetime.utcnow()
            delta_sec = (now - start).total_seconds()

            if delta_sec > timeout_sec:
                _die(
                    'Runtime %s timed out at %ss; aborting' % (
                        self.project_name, delta_sec))

            _LOG.debug(
                'Waiting %sms for runtime %s', interval_msec, self.project_name)
            time.sleep(interval_msec / 1000.0)

    def clean(self):
        self._avd_delete()
        self._sdcard_delete()
        self._dir_delete()

    def create(self):
        self._dir_create()
        self._sdcard_create()
        self._avd_create()

    def exists(self):
        return (
            self._dir_exists() and self._sdcard_exists() and self._avd_exists())

    def ready(self):
        return self._emulator_ready()

    def start(self, headless=True):
        self._emulator_start(headless=headless)

    def stop(self):
        self._emulator_stop()

    def _avd_create(self, strict=False):
        name = self._avd_name_get()
        path = self._avd_path_get()
        handler = _get_strict_handler(strict)

        if self._avd_exists():
            handler('Unable to create AVD at %s; already exists' % path)
            return

        code, result = _run([
            _Sdk.get_android(), 'create', 'avd', '-n', name, '-t', 'android-19',
            '--abi', 'default/armeabi-v7a', '-p', path],
            proc_fn=self._avd_create_proc_fn)

        if code:
            _die('Unable to create avd %s; error was: %s' % (path, result))

        _LOG.info('Created AVD named %s at %s', name, path)

    def _avd_create_proc_fn(self, process):
        process.stdin.write('\n')
        process.stdin.flush()

    def _avd_delete(self, strict=False):
        handler = _get_strict_handler(strict)
        name = self._avd_name_get()
        path = self._avd_path_get()

        if not self._avd_exists():
            handler(
                'Unable to delete AVD named %s from %s; does not exist' % (
                    name, path))
            return

        code, _ = _run(
            [_Sdk.get_android(), 'delete', 'avd', '-n', name], strict=False)

        if code:
            _LOG.warning(
                'Unable to remove AVD via Android SDK; falling back to manual '
                'cleanup. This may not be entirely accurate.')
            self._avd_delete_manually()
        else:
            _LOG.info('Deleted AVD named %s from %s', name, path)

    def _avd_delete_manually(self):
        name = self._avd_name_get()
        path = self._avd_path_get()

        message = 'Unable to remove AVD named %s from %s; does not exist' % (
            name, path)
        if os.path.exists(path):
            shutil.rmtree(path)
            message = 'Removed AVD named %s at %s' % (name, path)

        _LOG.info(message)

        # Path created by Android in addition to the path we specify when making
        # the AVD.
        internal_path = os.path.join(
            '~', '.android', 'avd', self._avd_name_get().lower())

        message = (
            'Unable to remove internal AVD named %s from %s; does not '
            'exist') % (name, internal_path)
        if os.path.exists(internal_path):
            shutil.rmtree(internal_path)
            message = 'Removed internal AVD named %s at %s' % (
                name, internal_path)

        _LOG.info(message)

    def _avd_exists(self):
        return os.path.exists(self._avd_path_get())

    def _avd_name_get(self):
        return ('%s_avd' % self.project_name).lower()

    def _avd_path_get(self):
        return os.path.join(self._dir_get(), self._avd_name_get())

    def _device_tmp_path_get(self, filename):
        return os.path.join(self._DEVICE_TMP, filename)

    def _dir_create(self, strict=False):
        handler = _get_strict_handler(strict)
        path = self._dir_get()

        if self._dir_exists():
            handler(
                'Unable to create runtime directory %s; already exists' % path)
            return

        os.makedirs(path)
        _LOG.info('Created runtime directory %s', path)

    def _dir_delete(self, strict=False):
        handler = _get_strict_handler(strict)
        path = self._dir_get()

        if not self._dir_exists():
            handler(
                'Unable to delete runtime directory %s; does not exist' % path)
            return

        shutil.rmtree(path)
        _LOG.info('Removed runtime directory %s', path)

    def _dir_get(self):
        return os.path.join(_RUNTIMES_PATH, self.project_name)

    def _dir_exists(self):
        return os.path.exists(self._dir_get())

    def _emulator_name_get(self):
        return '%s-%s' % (_EMULATOR, self.port)

    def _emulator_ready(self):
        if not self._emulator_running():
            return False

        code, result = _run(
            [_Sdk.get_adb(), 'shell', 'getprop', _BOOT_ANIMATION_PROPERTY],
            strict=False)

        if not code and result[0] == _BOOT_ANIMATION_STOPPED:
            return True

        return False

    def _emulator_running(self):
        _, result = _run([_Sdk.get_adb(), 'devices'])

        for line in result:
            if line.startswith(self._emulator_name_get()):
                return True

        return False

    def _emulator_start(self, headless):
        """Start an emulator in a child process."""

        def emulator(project_name, headless=True):
            headless_args = ['-no-audio', '-no-window'] if headless else []
            code, result = _run([
                _Sdk.get_emulator(), '-avd', os.path.basename(self.avd),
                '-sdcard', self.sdcard, '-port', self.port,
                '-force-32bit'] + headless_args, env=_Sdk.get_shell_env())

            if code:
                _die(
                    'Error starting emulator for runtime %s; reason: %s' % (
                        project_name, '\n'.join(result)))

        child = multiprocessing.Process(
            target=emulator, args=(self.project_name, headless))
        child.daemon = True
        child.start()
        _LOG.info(
            'Emulator for runtime %s started on port %s',
            self.project_name, self.port)

    def _emulator_stop(self, strict=False):
        handler = _get_strict_handler(strict)

        if not self._emulator_running():
            handler(
                'Cannot stop emulator for runtime %s; not running' % (
                    self.project_name))
            return

        _run([
            _Sdk.get_adb(), '-s', self._emulator_name_get(), 'emu', 'kill'])
        _LOG.info('Emulator for runtime %s stopped', self.project_name)

    def _sdcard_create(self, strict=False):
        handler = _get_strict_handler(strict)

        if self._sdcard_exists():
            handler('Unable to create sdcard %s; already exists' % self.sdcard)
            return

        size = '%sM' % self.sdcard_size
        code, result = _run([_Sdk.get_mksdcard(), size, self.sdcard])

        if code:
            _die(
                'Unable to create sdcard %s; error was: %s' % (
                    self.sdcard, result))

        _LOG.info('Created %s sdcard: %s', size, self.sdcard)

    def _sdcard_delete(self, strict=False):
        handler = _get_strict_handler(strict)

        if not os.path.exists(self.sdcard):
            handler('Unable to remove sdcard %s; does not exist' % self.sdcard)
            return

        os.remove(self.sdcard)
        _LOG.info('Removed sdcard %s', self.sdcard)

    def _sdcard_exists(self):
        return os.path.exists(self.sdcard)

class _Sdk(object):

    PATH = os.path.join(_RESOURCES_PATH, 'sdk')
    _VERSION = 'adt-bundle-linux-x86_64-20140702'
    _URL = 'https://dl.google.com/android/adt/%s.zip' % _VERSION

    @classmethod
    def delete(cls, strict=False):
        handler = _get_strict_handler(strict)

        if not cls._is_installed():
            handler('Android SDK not installed')
            return

        shutil.rmtree(cls.PATH)
        _LOG.info('Android SDK deleted from %s', cls.PATH)

    @classmethod
    def get_adb(cls):
        return cls._get_tool('adb', directory='platform-tools')

    @classmethod
    def get_android(cls):
        return cls._get_tool('android')

    @classmethod
    def get_emulator(cls):
        return cls._get_tool('emulator')

    @classmethod
    def get_shell_env(cls):
        display = os.environ.get('DISPLAY')
        if not display:
            _die('Could not get shell variable DISPLAY')

        return {
            _ANDROID_HOME: cls.PATH,
            _ANDROID_SDK_HOME: os.path.expanduser('~'),
            _DISPLAY: display,
        }

    @classmethod
    def get_mksdcard(cls):
        return cls._get_tool('mksdcard')

    @classmethod
    def install(cls):
        cls._download()
        cls._install_from_download()
        cls._update()

    @classmethod
    def is_installed(cls):
        return os.path.exists(cls.PATH)

    @classmethod
    def _accept_licenses(cls, process):
        """Scan through android sdk update output and accept licenses."""
        seen = set()

        for line in iter(process.stdout.readline, ''):
            if _ACCEPT_LICENSE_NEEDLE in line and not process.poll():
                license_name = re.findall(r"'(.+)'", line)[0]

                if license_name not in seen:
                    seen.add(license_name)
                    process.stdin.write('y\n')
                    process.stdin.flush()
                    _LOG.info('Accepted license %s', license_name)

            # TODO(johncox): figure out why this is needed to keep the process
            # from hanging.
            process.stdin.write('\n')
            process.stdin.flush()

    @classmethod
    def _download(cls):
        path = cls._get_download_path()
        _LOG.info('Downloading Android SDK from %s to %s', cls._URL, path)
        _run(['curl', '-o', path, cls._URL])

    @classmethod
    def _get_download_path(cls):
        return os.path.join(_RESOURCES_TMP_PATH, 'android-sdk.zip')

    @classmethod
    def _get_tool(cls, name, directory='tools'):
        path = os.path.join(cls.PATH, directory, name)

        if not os.path.exists(path):
            _die('SDK tool %s not found at %s' % (name, path))

        return path

    @classmethod
    def _install_from_download(cls):
        _run([
            'unzip', cls._get_download_path(), '-d',
            os.path.join(_RESOURCES_TMP_PATH,)])
        shutil.move(
            os.path.join(_RESOURCES_TMP_PATH, cls._VERSION, 'sdk'), cls.PATH)
        _LOG.info('Android SDK installed in %s', cls.PATH)

    @classmethod
    def _update(cls):
        _LOG.info('Updating SDK. This takes a long time; please be patient')
        _run(
            [cls.get_android(), 'update', 'sdk', '-a', '--no-ui'],
            proc_fn=cls._accept_licenses)

class _TestEnvironment(object):
    """An environment for test execution.

    Manages creation of filesystem for result storage, scratch space for copying
    and patching over the golden project, and log redirection.

    Lifecycle is:

        * Initialize environment.
        * Call set_up() to configure external dependencies (filesystem, loggers,
          etc.).
        * If operating on a project is desired, call set_up_projects().
        * Do work.
        * Always call tear_down().
    """

    _OUT = 'out'

    def __init__(self, ticket):
        self._handler = None
        self.path = self._get_path(ticket)
        self._projects_set_up = False
        self.out_path = os.path.join(self.path, self._OUT)
        self.src_project = None
        self.test_project = None
        self.ticket = ticket

    @classmethod
    def get_test_run(cls, ticket):
        root_path = cls._get_path(ticket)
        json_path = cls._get_result_json_path(ticket)
        test_run = TestRun()

        if not (os.path.exists(root_path) and os.path.exists(json_path)):
            test_run.set_status(TestRun.NOT_FOUND)
            test_run.set_payload('No test results found')
            return test_run

        try:
            with open(json_path) as f:
                result = json.loads(f.read())
                test_run.set_payload(result['payload'])
                test_run.set_status(result['status'])
        except:  # Treat all errors the same. pylint: disable=bare-except
            test_run.set_status(TestRun.CONTENTS_MALFORMED)
            test_run.set_payload('Test result malformed')

        return test_run

    @classmethod
    def _get_path(cls, ticket):
        return os.path.join(_RESULTS_PATH, str(ticket))

    @classmethod
    def _get_result_json_path(cls, ticket):
        return os.path.join(cls._get_path(ticket), cls._OUT, _RESULT_JSON_NAME)

    def save(self, test_run):
        json_path = os.path.join(self.out_path, _RESULT_JSON_NAME)
        with open(json_path, 'w') as f:
            f.write(json.dumps(test_run.to_dict()))

        _LOG.info('Result saved to ' + json_path)

    def set_up(self):
        """Sets up everything but projects."""

        self._configure_filesystem()
        self._configure_logging()
        self._clean_old()

    def set_up_projects(self, patches, src_project):
        """Sets up projects and applies patches."""

        self._configure_projects(src_project)
        self._copy_project()

        for patch in patches:
            self.test_project.patch(self._get_test_patch(patch))

        self._projects_set_up = True

    def tear_down(self):
        """Tears down both set_up() and set_up_projects()."""

        self._copy_result()
        self._remove_test_project()
        self._revert_logging()

    def _clean_old(self):
        """Cleans old test invocations from the filesystem.

        The _TestEnvironment code path is hit on each web worker test
        invocation, so we do cleanup here to keep the test results on the
        filesystem from filling disk.
        """
        now_sec = time.time()
        for path in os.listdir(_RESULTS_PATH):
            result_dir = os.path.join(_RESULTS_PATH, path)
            delta_sec = now_sec - os.path.getmtime(result_dir)
            if delta_sec >= _RESULTS_TTL_SEC:
                shutil.rmtree(result_dir)
                _LOG.info(
                    ('Result directory %s too old (delta: %ssec; TTL: %ssec); '
                     'removed'), result_dir, delta_sec, _RESULTS_TTL_SEC)

    def _configure_logging(self):
        """Also send log info to test project dir."""

        self._handler = logging.FileHandler(os.path.join(self.path, 'log'))
        self._handler.setLevel(_LOG.level)
        _LOG.addHandler(self._handler)

    def _configure_projects(self, src_project):
        relative_editor_file = src_project.editor_file.split(
            self._get_project_name_infix(src_project.name))[1]
        test_project_path = os.path.join(self.path, src_project.name)

        self.src_project = src_project
        self.test_project = _Project(
            src_project.name,
            os.path.join(test_project_path, relative_editor_file),
            src_project.package, test_project_path, src_project.test_class,
            src_project.test_package)

    def _copy_project(self):
        shutil.copytree(self.src_project.path, self.test_project.path)
        git_path = os.path.join(self.test_project.path, '.git')
        gradle_path = os.path.join(self.test_project.path, '.gradle')

        # Clean up files not needed for test builds/runs.
        for prune_dir in [git_path, gradle_path]:
            if os.path.exists(prune_dir):
                shutil.rmtree(prune_dir)

        _LOG.info(
            'Project %s staged into %s',
            self.test_project.name, self.test_project.path)

    def _copy_result(self):
        if not self._projects_set_up:
            return

        copy_from = os.path.join(self.test_project.path, _RESULT_IMAGE_NAME)
        # When build/test fails there may not be a result image.
        if not os.path.exists(copy_from):
            _LOG.info('No result image found at ' + copy_from)
        else:
            copy_to = os.path.join(self.out_path, _RESULT_IMAGE_NAME)
            shutil.copyfile(copy_from, copy_to)
            _LOG.info('Result image saved to ' + copy_to)

    def _configure_filesystem(self):
        os.makedirs(self.path)
        os.makedirs(self.out_path)

    def _get_project_name_infix(self, project_name):
        return '/%s/' % project_name

    def _get_test_patch(self, patch):
        # Rehome patch under test project.
        _, suffix = patch.filename.split(
            self._get_project_name_infix(self.src_project.name))
        return Patch(
            os.path.join(self.test_project.path, suffix), patch.contents)

    def _remove_test_project(self):
        if not self._projects_set_up:
            return

        # Entire test filesystem tree may have been removed already due to age.
        if os.path.exists(self.test_project.path):
            shutil.rmtree(self.test_project.path)
            _LOG.info(
                'Project %s unstaged from %s ',
                self.test_project.name, self.test_project.path)

    def _revert_logging(self):
        if self._handler is not None:
            _LOG.removeHandler(self._handler)

        self._handler = None

if __name__ == '__main__':
    main(_PARSER.parse_args())


text:
Kazi Nazrul Islam (Bengaals: কাজী নজরুল ইসলাম Kazi Nozrul Islam) (25 mei 1899 – 29 augustus 1976) was een Bengaals dichter, muzikant, revolutionair, en filosoof. Zijn gedichten evoceren een intens spiritueel verzet tegen orthodoxie en onderdrukking. Zijn poëzie en nationalistisch activisme bezorgden hem de populaire titel Bidrohi Kobi (Rebel Poet). Nazrul schreef tijdens zijn leven een uitgebreid gerenommeerd oeuvre en is officieel erkend als de dichter des vaderlands van Bangladesh; ook in India wordt hij gerespecteerd .

Bengalees schrijver
Dichter
Bengalees musicus

redpajama_set_name: RedPajamaWikipedia


text:
Demi Lovato: National Anthem performance wows World Series
By Nick Romano
November 01, 2015 at 10:10 PM EST
Ron Vesely/Getty Images
Even if you don't know much about baseball, it's hard not to appreciate a good rendition of the national anthem. "Confident" singer Demi Lovato stepped up to the plate to belt out "The Star-Spangled Banner" before Game 4 of the World Series.
Lovato took a few dramatic pauses before tackling the song's higher register. It all worked to her advantage as the crowd cheered her throughout the performance. The official MLB YouTube channel released video of the moment online shortly afterwards.
A number of celebs reached out to Lovato on Twitter to praise her rendition. Billy Ray Cyrus tweeted that she "crushed it outta the park," while Josh Groban wrote "great anthem."
.@ddlovato did such a great job singing the #NationalAnthem today at the #WorldSeries! She crushed it outta the park!!! 🇺🇸⚾
— Billy Ray Cyrus (@billyraycyrus) November 1, 2015
Wow….@ddlovato can SING. Great anthem. #WorldSeries
— josh groban (@joshgroban) November 1, 2015
You knocked it out of the park @ddlovato !!!
— Elvis Duran (@elvisduran) October 31, 2015
Game 4 took place on Saturday between the Kansas City Royals and the New York Mets at Citi Field. Lovato's performance followed the day after Billy Joel performed the same feat before Game 3.
By Nick Romano @NickARomano

redpajama_set_name: RedPajamaCommonCrawl


text:
Did clueless fly tippers in the Fens overnight leave a clue - such as their name and address?
Published: 12:51 PM July 13, 2020
The fly tipping that greeted early morning commuters in the Fens on July 13. Council officials responded quickly and believe they may have dscovered a clue as to who was responsible. - Credit: Archant
Council officials believe they can identify those responsible for fly tipping a large quantity of household effects in the Fens.
The rubbish was dumped on a road at Floods Ferry near March overnight and spotted by motorists on their way to work today (Monday).
However, Cllr Jan French believes a clue to the identity of the people who owned the rubbish may have been inadvertently left at the scene.
A carrier bag found amidst the pile is thought to have contained the identity of possible suspects: the name and address found is of someone from March.
Cllr French warned that if culprits are found "they can expect a massive fine, and all because they didn't want to pay someone to collect is responsibly".
A year ago a couple from St John's Chase, March, were ordered to pay more than £2,000 in fines and court costs after being prosecuted by Fenland District Council.
They were convicted two years after being responsible for a vehicle which was involved in fly-tipping at Wype Drove, Eastrea, on October 2, 2017.
If you see anyone fly-tipping in your area, you can report it via Fenland District Council's website at: www.fenland.gov.uk/clean-streets, via Twitter or Facebook @FenlandCouncil or in person at any of its one stop shops, customer services centres or community hubs.


Do you think too highly of yourself?
Do you ever struggle with pride?
Pride is an issue of significance. Many times, we think pride is only of the arrogant, "I'm better than you" pride.
So, it's true: Don't think too highly of yourself. But could we also say, don't think too lowly of yourself? If you're thinking too lowly of yourself, you might find yourself getting upset with yourself or angry at yourself and if you're guilty of that then who are you trusting? Could we also say that pride is thinking too much about yourself?
Too high, too low, too much–all of those are pride. In whom is your significance? Here's my encouragement: Have a sober judgement of yourself; agree with God about yourself. –That is true humility.
https://freshstartforallnations.org/wp-content/uploads/2016/02/cliff.png 426 640 freshstartforallnations https://freshstartforallnations.org/wp-content/uploads/2018/05/FS-Profile-2.png freshstartforallnations2016-02-23 07:30:492018-04-09 12:51:30In Whom is Your Significance?
Shame, an Issue of Identity… Forgive in Advance!


A team of eight faculty members attended a three-day Assessment Academy workshop in Chicago at the end of October, joining teams from about 20 other colleges and universities.
The Assessment Academy is a special four-year program offered by the Higher Learning Commission (HLC) to its member institutions. The HLC accredits Maharishi University of Management and more than 1,000 other colleges and universities in 19 states.
This process takes place at three levels: the individual course, the academic program, and the school as a whole.
"We want students to have abundant opportunities to exercise and strengthen these vital skills throughout their time here and to build the foundation for a successful professional and personal life," said Dr. Chris Jones, dean of academic programs and leader of the team.
At the course level, faculty leaders introduced a new chart to be part of every class syllabus. These "student learning charts" graphically display three things: what students are expected to learn, how they will learn it, and how they will demonstrate they have learned it. They also show how the course learning outcomes connect to the Essential Learning Outcomes, so that students and faculty always have the larger learning goals in front of them. The faculty have now been trained in creating and using these charts.
MUM enrolled in HLC's Assessment Academy to benefit from the guidance of experts in student learning and assessment. The academy also gives MUM access to its Collaboration Network, so that MUM academic leaders can look at and benefit from what hundreds of other schools are doing in their own assessment work.
MUM is in HLC's Open Pathway accreditation track, which is for mature institutions and by HLC invitation only. Colleges and universities in this track choose a "quality initiative" they commit to working on over a 10-year accreditation cycle. Schools are encouraged to choose a stretch goal for this initiative.
MUM's next accreditation visit will be in 2020. Among other things, the visiting team will review MUM's Quality Initiative.
At October's workshop in Chicago, all the schools that had enrolled in the Assessment Academy two years ago came together to review their original plans, assess their progress so far, and develop detailed plans for the final two years. The workshop also featured presentations, feedback, and mentoring from assessment experts.
9. Local and global citizenship.


text:
Q: Why not ask to save password in IE 11 IE 11 version : 11.0.115
if add eventListner to username or password element,
Do not ask me about saving password in IE11
How do i fix it ?
  <form id="logintest" action="./test.html" method="POST">
    <input id="username" type="text" name="username" onblur="this.value=this.value.toUpperCase()" />
    <input id="password" type="password" name="password" />
    <button type="submit">Go</button>
  </form>

A: *

*Open Internet Explorer.

*Select the gear on the right side of the main toolbar and choose "Internet Options".

*Select the "Content" tab, then select "Settings" in the "AutoComplete" section.

*In the "Use AutoComplete for" pane, do one of the following:

*Uncheck the "Ask me before saving passwords" box to stop IE from prompting you to save passwords. Passwords will still be saved on some occasions. Check the box if you wish to be prompted for saving passwords.

*Uncheck the "User names and passwords on forms" to completely prevent IE from saving usernames and passwords. Check the box to enable it. You may also want to select "Delete AutoComplete history…" if you wish to clear any passwords IE has already saved.

*Select "OK". Close and restart Internet Explorer for the changes to take effect.

redpajama_set_name: RedPajamaStackExchange


There are primarily two beach areas in Carlsbad CA. Carlsbad State Beach which is a family water-recreation beach for swimming, surfing, skin diving, fishing and picnicking. South Carlsbad State Beach is a camping beach with 222 campsites are located on the bluffs overlooking the beach. There are stairway accesses in the campgrounds leading to beach areas.
Carlsbad State Beach is a 4-mile long beach that is sometimes referred to as Tamarack Beach since it is located at the foot of Tamarack Avenue in the city of Carlsbad CA. It is the most crowded area where you will see families enjoying picnics, barbecuing, swimming, sunbathing and playing volleyball. There are areas set aside for surfing, boogie boarding kayaking and fishing. There are jogging trails on the bluffs and down the beach areas. Walkways on the beach permit roller-blading and is dog-friendly with leashes. The beach is located near Carlsbad Village where you will find nice dining restaurants and boutique shopping on Carlsbad Village Drive.
Getting To Carlsbad State Beach. From Interstate 5 exit at Tamarack Avenue, Cannon Road or Carlsbad Village Drive West to Pacific Coast Highway. Parking is a mixed bag with small beach parking lots and roadside spots.
South Carlsbad State Beach is a camping beach. There are two sections that combined feature 222 camping sites that set on the bluff overlooking the beach. There are no day-use facilities in the campground but the beach area is open to daily public use. The most scenic camping spots are those with ocean beach views. There are several stairways located in the campgrounds that lead down the bluffs down to the beach.
This is one of the most popular campgrounds in the San Diego area and can get quite crowded, particularly during the summer months. Reservations are a must. In fact, reservations often fill up six months in advance on the day they are released. The campground is divided into two sections by the camp road that runs down the middle between the sections. Token-operated showers are available to campers. Token machines are located at the camp fire center and ranger system. A camp store located near the campground entrance operates March through October and provides all the amenities a camper may need including some RV supplies, boogie boards, firewood, and fishing gear.
Getting To South Carlsbad State Beach. From Interstate 5, take the Poinsettia exit west to the campground gates. The address is 7201 Carlsbad Boulevard in Carlsbad, California.
For guidelines, safety and other information, visit the State Parks website.
Carlsbad California Beaches. Ponto Beach.


We have all been anticipating the release of Pokemon Bank and Poke Transporter. What with the server overload and the now delayed release with no word of when the exact date will be after the failed 27 December launch, it has been many a day I've spent scouring the net for any detail.
Just a rumour but maybe there is some truth. We shall see.
Let us know what you think and if you find out anything else.
Nothing as of yet on the UK eshop... I have the Pokémon bank app pinned so I can check on it daily. Still shows TBD so no change sady.
That's one reason why it was delayed. But apparently Pokebank allowed the transfer of hacked/not legit Pokemon. Example: torterra with masterball. So this one other reason, but they haven't adressed this problem publicly.
That's why they took it out, to fix that HUGE problem.
Slight problem here, that so called official announcement, says that it's going to be released January 7th, 2013.
So it was really out a YEAR AGO???? How did we not notice this?!!
So hoax for sure then lol didn't even notice that. Must be anticipation blindness.
WHY DO THEY ALWAYS LEAVE AMERICA LAST.
I would think the US will have it too by the middle of the month.
Hm, middle of the month sounds reasonable. Ish.
ALRIGHT GEN FIVE POKES, LOOK ALIVE! COME ON COME ON UP TO IT WE'VE GOT A POKEMON BANK PLANE TO CATCH GET MOVING PACK YOUR BAGS SAY GOODBYE TO UNOVA! WE'RE GOING KALOS!
I can't see you waiting much longer. If they know its working it wont be long, all they will be doing is staggering release as to not sink the servers. Would only take a few weeks for Pokebanks novelty to wear off and only a few days for most people to transfer there pokemon.
Hope this means its out in SA, will be checking tonight!


Ibuprofen 600mg, Ibuprofen Eg 400 Mg Prix (Ibuprofen. Motrin (Ibuprofen) Rated 5 /5 based on 484 customer reviews Product description: Motrin is used for treating rheumatoid arthritis, osteoarthritis.
Reseptor Ibuprofen – Ibuprofene Biogaran 400 Mg Prix ibuprofen eg 600 mg prix reseptor ibuprofen mutations associated with the CFTR gene,. ibuprofene biogaran 400 mg prix, generika ibuprofen 400,.
Cerotti Ibuprofene Prezzo – 7 ibuprofen eg 400 mg prix Zovirax Safe During Pregnancy Herpes Zoster Shingles Tito Plan B The Best Range Skin Care Products Thermolife Hair Loss .
ibuprofen eg 400 mg prix – . While pumping many 400mg can take priligy for sale uk small ibuprofen eg 400 mg prix baby for congestion.
Generic Motrin 600mg Chemist / Ibuprofen Eg 400 Mg Prix. ibuprofen eg 400 mg prix Can I give my dog childrens ontstekingsremmer dosering cialis pharmacy cost walmart ibuprofen eg 400 mg prix.


New skiing lift will be installed in Gudauri for the next winter season – photo-report of the construction progress.
The length of the new 6-seater chair lift Doppelmayr (Austria), will be 2400 meters. Throughput of the new cableway will be 2800 persons per hour.
Lower station of the new cableway will be built at altitude of 2200 meters above the sea level, close to the hostel Bidara and across the road to the hotel Cross Pass.
Upper station of the new, 8th ski lift in Gudauri will be located at 2800 meters above the sea level and near the upper gondola station (closed lift), built in 2012.
New ski lift will expand the skiing area to the western resort slopes, and the new tracks will be installed there. Location of the new cableway is already marked on the resort map.
Just at the bottom, where the new lift begins, the T-lift Tatra was installed in the late 80s.
New cableway will relieve the existing mountain skiing tracks and open the faster access to the most popular snowfields of Gudauri for the freeriding fans as well as allow the faster descent to the tracks and return to hotel for the guests of Upper Gudauri hotels – Alpina, Monte, Edelweiss, Shino, White Shino and Retro.


text:
Endiprev awarded the commissioning of the Saint-Nazaire Offshore Wind Farm
Endiprev will start the commissioning of the Saint-Nazaire Offshore Wind Farm, for GE Renewable Energy, as the main engineering service supplier. That is the biggest offshore project to date that Endiprev is involved.
Endiprev team will be the main engineering service supplier for the commissioning of the Saint-Nazaire Wind Farm. This will be the first commercial offshore wind farm in France. The team had already supported GE Renewable Energy in the installation test in the Antwerp Port, last year.
Our team will start commissioning the 80 GE Haliade 150 wind turbines in the spring. The offshore wind farm is planned to come online later this year. Endiprev will take part in three scopes of activity: Electrical & High Voltage works, Mechanical and Electrical Completion, and Commissioning. Throughout this project, our team will have more than 100 skilled engineers and technicians working on it. That makes the Saint-Nazaire Offshore Wind Farm Endiprev's biggest project so far.
"This is yet another turning-point project for us, and we are very happy that GE Renewable Energy has trusted in our expertise, teams, and project management skills," said Tiago Ornelas, Business Development Manager of Endiprev Group. After the company's performance in several offshore wind farms with the Haliade 150 wind turbine, and the work that we have been doing on the new Haliade-X, we are proud that GE Renewable Energy entrusted this project to us.
The Saint-Nazaire Wind Farm in the French wind energy industry
The Saint-Nazaire Offshore Wind Farm will be the first large-scale offshore project in France. The 80 wind turbines will generate a total capacity of 480 MW, enough energy to power 400,000 houses. Located between 12 and 20 km off the Loire-Atlantique coast in the Western part of France, the planned production will cover 20% of the electricity consumption of its location.
This offshore wind farm is in accordance with the goals of clean and renewable energy. By 2030, France is aiming to have 32% renewable energies in its final energy consumption. The Saint Nazaire Offshore Wind Farm is only the first step. In fact, last month, the French President, Emmanuel Macron, announced that France will build 50 offshore wind farms with a combined capacity of at least 40 GW.
It is very exciting to be part of France's offshore wind market growth, especially in its first large-scale offshore project. This is even more true since the country is one of our focus markets. Having worked together on several offshore projects in three continents, we believe our team can bring added value to this project and as GE's partner.


One of the Hungerford Engleford properties – owned by the Lord of the Manor, and later by two surgeons and a Bishop. Used as a boarding school, drapers, post office, and last but not least as a grocer for the last 100 years. Recently a wine store -> Kitchenmonger.
From Listed Building records: House, now house and shop. Early 19th century. Slate roof, timber moulded eaves cornice, brick walls with rubbed flat arches to first floor windows. Three storeys. Two glazing bar sashes flanking central blank on second floor. Two casements to left of first floor and glazing bar sash to right. 19th century shop front with projecting timber fascia and cornice over panelled door to alley on left and two slightly bowed bays flanking central 20th century glazed doors with rectangular fanlight and reeded pilasters.
Grade 2 Listed Building - Terraced house and shop on West side of High Street in Market Place - three storeys plus cellar, outbuildings to rear.
The shopfront is basically late c19th, although it has been restored; it has a projecting timber fascia and cornice over a panelled door to an alley (on left) and two slightly bowed bays flanking central c20th glazed doors with a rectangular fanlight and reeded pilasters.
The facade masks an older timber - framed structure. The frame was revealed during the restoration of the Courtyard next door (=24 HS). Instead of supporting wattle and daub infilling, as in the earlier buildings, this frame was covered with lathe and plaster. The timber frame is not, therefore, visible inside the house. It probably dates from the c17th.
The back wing, also has some timber framing in the cross walls, but the north wall (facing onto the courtyard) is of brick and flint, arranged in stripes. It may be an C18th refacing. The staircase projects in the angle of the "L" shaped plan of the building, and is c18th.
- Mary Spackman's last day in the shop, 29 Jun 1990 (John Allen).
- Phil Spackman's last day in the shop, 29 Jun 1990 (John Allen).
- Spackman's shop closed, 29 Jun 1990 (John Allen).
<1724 (*1) 1743 deed of 25 HS states a previous owner to John Hungerford Esq. as Henry Smith (owner) & John Ball (occupant).
1724 (*1) William Hungerford sold to John Hungerford (son of Walter Hungerford) "Manor & Lordship of Hungerford"
- (*2) John Hungerford of Lincolns Inn, a Bencher, Counsel for The East India Company & Member of Parliament for Scarborough, of the Cadenham branch of the Hungerford family, probably one of the 3 sons of Sir George Hungerford; JH purchased the Manor of Hungerford Engleford. He died on 8/1/1729, & was buried at Hungerford Church one week later. He left £16,000 and his extensive library went to Kings College, Cambridge, where there is a monument in his memory. A striking memorial tablet (illustrated in Sir Richard Colt Hoare's "Hungerfordiana") was placed in Hungerford Church, but has not survived. A memorial to his manservant, Henry Capps – "Trusty" has survived. He died in 1774, leaving his legacy to the poor of the Parish. In 1782 the £50 legacy was used to re-build the Grammar School.
1729 (*1) John Hungerford leased to Rev. Dr. Thomas Mangay & John Coppinger. John & Mary Hungerford to use during life.
1739 (*1) Mary Hungerford died.
1740 (*1)Kings, Cambridge brought bill in High Court of Chancery against Mangay & Coppinger re the Will. Hon. The Justice Page decreed Freehold estate to be sold.
1762 (*1) Will of Matthew Loder: left his Manor in Hungerford to Sam Smith, his son-in-law (md. to his daughter Frances) & 1763 after Sam's death to Sam's son, Loder Smith.
1771 (*1) Sam Smith, Stroud, Lacock, Wilts. renounced his right of inheritance in favour of his son, Matthew Loder Smith, surgeon in Hungerford.
1774 (*1)Matthew Loder Smith was 3rd son of Sam Smith, Stroud, Lacock, Wilts. & grandson of Matthew Loder.
1792 (UB) Under Physic: Matthew Loder Smith - surgeon, but no address. 2 other surgeons listed: Joseph Condell; & Edward Duke = 26HS to S.
1798 (*1) "Mansion House" (=121HS) & estate still including Cottages occupied by Matthew Bance, John Hidden, Richard Challis, William Talmage (1781 CL locates where these are; see 121HS for details); & land purchased by Kennet & Avon Navigation.
1811 (*8) Misses Robinson (occupants); Thomas Robinson copyhold interest on 25HS.
1818 (*1) M.L. Smith & wife Lucy sold to John Hunt Watts, Ham Esq. for £5450. Estate includes cottages occupied by Dean Hatter, Mary Shepherd (widow), Maria Bance (widow), Henry Clements, ..... Martin, John Chuswick and John Leader (labourers), Misses Robinson, Browns Yard, "Bartons" or Close.
1822 (*1) George Goddard, draper, Speenhamland, leased 25HS for 5/= p.a.
1827 (*1) Eliza Westall, Dover paid £800 for lease to George Goddard, draper, Speenhamland & to John Westall, draper, Hungerford.
1842 (*8) Misses Robinson lived in 25HS until the death of the last sister in about 1842.
1843 (CL) Miss Robinson deleted; John Ives substituted.
1848 (*1) Eliza Westall leased to James Bodman, linen draper, 7 years @ £40 pa. Mentions John Hives before & John Westall before that.
1851 (CS) James Bodman (47), linen draper.
1854 (BD) James Bodman - linen & woollen drapers, haberdasher, hosier, HS (no entry for Esther Bodman nor John Hives).By 1871 CS James Bodman in 112HS.
1857 (*1) The Bishop of Manchester, The Rt. Rev. Thomas Grant, Doctor of Divinity, Catholic Bishop St. Georges Catholic Church, Southwark leased to Mr. Charles Osmond for £34 pa.
(*4) 18th century P.O. in Charnham St., by early 19th century P.O. in HS but ?site by 1857 P.O. at 25 HS til 1890s; by 1896 P.O. at 14 HS; 1914 moved to purpose-built Post Office at 126 HS; 1990 Post Office Counters moved to Martins, 6 HS.
1864 (BD) Charles Osmond, Postmaster, HS. Also newsagent, agt. for Norwich Union Fire & Life, & Norfolk Farmers' Cattle Insurance Society.
1881 (CS) Charles Osmond (job illegible), (CS) Charles Woolston & James Shaw, Postal clerks.
1886 (*6) Charles Osmond "formerly Postmaster H/F" bought The Plume, 113HS from The Dean & Canons of Windsor; in 1889 C.O. sold The Plume to his son, Charles Alexander Osmond who sold it in 1891.
1890 (*1) Charles Osmond died, aged 72. Will made 1889,left estate to his wife Ann for the term of her natural life.
1901 (*1) Ann Osmond died.
c1901 (*9) Photograph of 25HS (in Photo Gallery) with "London Provincial Stores" sign over doorway. It seems that for a short time Thomas Killick may have used the premises as the London & Provincial Stores when the Post office closed, and before it was bought by Ernest Barnard, and then by Edward Gingell, when the shop opened in Gingell's name.
1902 (*1) Ernest Barnard sold to Edward Gingell, from Wiltshire, for £800. See Conveyance, 23 Jun 1902.
1903 (KD) No entry for Gingell; Ernest Barnard - house furnisher, HS (?122HS) London Provincial Stores, grocers, High Street.
1911 (KD) Edward Samuel Gingell, grocer, HS.
1914 (CL) Edward Samuel Gingell.
- (*5) Gingells children: Percy, Winifred (married Mr Mark Pennock-Purvis & lived in 31 HS) & Kenneth. Geoffrey Gingell of Sidmouth (son of Kenneth), emailed Feb 2011 to say that there was a 4th child - Wilfred Gingell.
1932 (QR) Mr Gingell "House late the Misses Westall".
1939 (Blacket's) E S Gingell, grocer; advert: "Family Grocers & Provision Mrchts., Market Place. Best Home Cured & Danish Bacon, Agts. for the famous G.P. Teas. All best Standard Groceries stocked." E.S.G. a Trustee of The Town & Manor (at least from 1902 as seen picture of the Constable & Trustees of 1902).
1939/42 (CL) Mr. Gingell, house late the Misses Westall.
1942 (*1) Edward Gingell died.
1947 (CL) Beatrice Annie Gingell, grocer. (Geoffrey Gingell kindly adds (May 2016) that she died 8 Jun 1947).
1978 (*10) Started to sell china and glass.
1984 Spackmans moved from flat above the shop to a new house, Prospect House, built on rear of 31HS with access to Prospect Road.
1987 (*10) Charles Ivan Spackman died.
1989 Philip & Mary Spackman sold their high class grocer, wine & spirits, glass & china business. Mary Spackman JP, nee Bullen.
June 1990 Spackman's closed. See "Spackman's will close, but stay in the family", and "Landmarks hide secret past", NWN 15 Mar 1990.
1991-92 Interior and exterior renovations. Shop un-used. Door at south end titled "Spackman House".
1994 Windrush Wines. See Advert, Oct 1995. Closed 1996.
20.12.1998 Phil Spackman died [past Constable and Trustee of Town & Manor].
1999 Wine Rack wine store.
2011 Mar: Kitchenmonger opened - moved from 8 High Street.
*9 = Mr. Philip Walter, 17 Fairfields, Hungerford - photogragh 25HS as L.P.S.
The original abode on the site of the presentday No. 25 High Street belonged to the manor of Hungerford Engleford (variant spellings of this name include Ingleford, Inglefol, Englefield. The Victoria County History of Berkshire uses the form Engleford, and I think you are wise to maintain this as a standard form for normal reference purposes).
The manor of Hungerford Engleford existed with its own rights long before the trust which set up the Borough and Manor, finalised in 1617. Being an entirely separate manor (in the same way as the manor of Hidden was or the manor of Charlton / Hopgrass) they paid their own quit rent to their own lord and not to the Town and Borough of Hungerford. Where they differed from Hidden and Charleton /Hopgrass was that they seem to have possessed Commoners' rights as townsmen. It follows that Hungerford Engleford properties do not appear on town quit rent rolls, but their residents do appear in Commoners' lists. (Rules about who were or might be Commoners seem to have changed at different times in the town's history!).
The manor house or capital mansion of the manor of Hungerford Engleford was from earliest times of which we have record (i.e. 1470) located on the site of the present No. 121 High Street. It remained as the manor house until the manor was virtually extinguished in the early 19th century, and continued to be known locally as the manor house until it was taken over by the South Berkshire Brewery Company. There can be no question therefore of No. 25 High Street having been the manor house.
The speculation in your print out of No. 25 may have arisen (item 1798) from a reference in an earlier sale of the entire manor, proving the vendor's title to the various properties which comprised the estate and including the manor house (i.e. No. 121).
The manor of Hungerford Engleford consisted of various proerties. These included houses on both the east and west sides of the High Street, as well as in Church Street and lands in Sanden Fee. It did not possess land or property in "Newtown", since the latter was part of the manor of Hidden, and no such property in "Newtown" could have been sold as part of the manor of Hungerford Enleford (item 1798).
During the 19th century manorial rights tended to disappear, due particularly to the Enclosure Awards, but the break up of the manorial system had been in evidence from the mid 17th century when manorial lords were sometimes forced by debt to dispose either of single items of their property by means of long leases virtually equivalent to freehold (e.g. 999 years) or long-lease a bloc of property (according to their financial needs) or in desperate cases to sell off the manor itself.
This happened with Hungerford Engleford and it did also with Hidden. It is quite likely therefore that individual plots or cottages in Hidden were sold especially in the mid or late 19th century by individual owners and that three such cottages could have been purchased by Mr. Osmond and then sold, along with his other properties, in 1902. Sorry to take so long and risk labouring a point, but it may save you a wild goose chase!
With reference to the names of Hungerford Engleford occupants in item 1798, all of whom would have Commoners' rights, but none of whom would appear in the town quit rent rolls. If you consult the Commoners' lists for 1781 you will see the name of Matthew Bance (no. 52) in a position that corresponds to 119 High Street; John Hidden (No. 3 – not to be confused with another John Hidden No.79) who occupied a building or part of a building which must have been on the corner of High Street West and Church Street. I have begun to wonder whether this John Hidden, together with Nos. 1 and 2 in the 1781 CL may in fact have been at the back of the High Street corner property and thus in Church Street where the manor of Hungerford Engleford held some sites.
Richard Challis No. 69 is located in the 1781 CL on the east side of the High Street at a point approximate to Nos. 94-96 (pinpointing the numbering is difficult here). There were two or three Hungerford Engleford cottages about here. Finally Edward Talmadge No. 46, who died 1794, was the father of William Talmadge. The 1781 CL has Edward Talmadge located at one or other of the houses now 124-127 High Street (again difficult to pinpoint exactly), and here also were Hungerford Engleford properties.
I suspect that in the sale of 1818 these same buildings recur, though some of the occupants have changed.
A Thomas Robinson had a copyhold interest in the house (No. 25) in which the Misses Robinson lived (1811, 1819). I think these were Mary-Jane, Ann and Winifred, daughters of Thomas Robinson. As he had a son also called Thomas there is a little uncertainty as to their relationship with the copyholder, which I have not time to sort out.
Re the Loder, Toder, Loader references: the family name is correctly Loder.
I cannot at present identify Henry Smith and John Ball, mainly because there are so many Smiths and Balls!
Nor can I explain why No. 24 does not appears on the QR Rolls. My impression is that there was a building here pre-1617 which did pay quit rent to the town. There is no evidence of the preoperty belonging to the manor of Hungerford Engleford, nor to the Parsonage (Dean & Canons of Windsor). So what happened? Strange.
The Manor and "Mansion House" refer to 121 HS not 25 HS. Spackmans (25HS was one of the Hungerford Engleford Estate properties.
24.5.1729 John Hungerford's will: Mangay and Copppinger executors. One third to Mangay; two thirds to Provost and scholars of King's College Cambridge.
5.6.1729 John Hungerford, son of Walter Hungerford, leased to Mangay and Coppinger the "Manor or Lordship of Hungerford" (bought 1724 from William Hungerford).
May 1740 King's Cambridge brought Bill in High Court of Chancery against T.M. and J.C. re the will.
16.7.1740 Hon. Justice Page decreed freehold estate to be sold.
14.7.1742 Advertised in London Gazette at £2,600.
19.11.1743 Bought by Thomas Knight, goldsmith at Breadstreet, London. £1,000 paid to Mangay; £1,600 paid to Coppinger. Leased in trust to Matthew Loder, surgeon of Thame.
Rev'd Dr Thomas Manay, Eling, Middlesex, Doctor of Divinity.
John Coppinger, St. Clement Danes.
Previous purchased by Henry Smith, tenure of John Ball, formerly purchased by John Hungerford, Esq.
31.5.1762 & 31.11.1763: Will of Matthew Loder "late of Lincoln's Inn, Middlesex", left to Sam. Smith (husband of daughter, Frances) his manor in Hungerford, to go after Sam's death to Sam's son Loder Smith.
1771 Sam Smith renounced his right to this in favour of his son Matthew Loder Smith, surgeon in Hungerford.
5.7.1774 Samuel Smith of Stroud, Lacock, Wilts., named in will of Matthew Loder Smith.
16/17.9.1774 Matthew Loder Smith was third son of Sam Smith, of Stroud, Leacock, Wilts., grandson of Matthew Loder.
1.10.1798 John Hunt Watts paid 5/= to Matthew Loder Smith, Surgeon, for [now 21 HS], with to north (= 20HS) James Shipton, and to south (=22 HS) Matthew Loder Smith.
7.10.1798 "Mansion House" and estate still including cottages occupied by Matthew Bance, John Hidden, Richard Challis and William Talmage, and land purchased by Kennet and Avon Navigation Company.
7.10.1798 Matthew Loder Smith paid £1,200 to estates of Stephen Pearce, deceased 1782, and Seymour Mundy, deceased.
3.1.1818 John Hunt Watts, of Ham, Esquire bought from Matthew Loder Smith, and wife Lucy for £5,450 [Richard Parsons ?mortgager, late of Stanham Farm, now City of Bath]. Estate includes cottages occupied by: Dean Hatter, Mary Shepherd, widow, Maria Bance.


The Purple Store exists for one reason and one reason only: to satisfy the needs of purple-lovers everywhere.
The retail venture – which was born out of a clever idea at a party – offers everything from men's shirts to shower caps to tea kettles in a vibrant array of purple hues.
The brainchild of Adam Sheridan, The Purple Store has grown to accommodate more than 800 products; it has even expanded in recent years to a physical showroom at its headquarters in Seattle.
But as business began to grow (and before it shot to fame with a viral Facebook post), Adam saw that the way he was shipping just wasn't sustainable. He needed a solution that would eliminate his trips to the Post Office. More importantly, he needed software that could operate natively on his Mac computer and offer international shipping capabilities.
Adam discovered a solution in Endicia. Endicia software pre-fills order shipment details such as address, weight and postage type, saving The Purple Store a tremendous amount of time in preparing shipping labels.
With Endicia in place, Adam can streamline his shipping process and eliminate hour-long trips to the Post Office. That means more time spent scoping out new products with "just the right" shades of purple.
The Purple Store especially appreciates Endicia's international capabilities. With 15 percent of its revenue generated from global markets, Endicia allows it to prefill customs forms, check country bans and calculate international tariffs with ease.
But the true test came when a particularly purple Facebook post went viral.
With posts that generally reach 3,000 – 15,000 readers, The Purple Store's "We Love Purple – Pass it on" reached an astounding 720,000+ viewers. Orders began flying in from around the world (with a special concentration of purple fans in Australia).
Endicia's software met the order influx without a hitch, allowing Adam to focus on delivering a superb purple experience with every package posted.


text:
Quote Finder notes
MEPs' takes on the #EUbudget
Praise and criticism about the multiannual financial framework presented last week by Junker's Commission, as it was tweeted by MEPs.
#Eubudget: keywords as observed in the QuoteFinder
The Quote Finder
This article is largely based on the information gathered by the Quote Finder, a tool that we developed in order to easily monitor and browse the tweets published by all the members of the European Parliament, spotting trending keywords, influential actors, and more. The tool is freely available to everyone.
Following the presentation of the multiannual financial framework (MFF) for 2021-27 by the European commissioner for Budget, Günther Oettinger, members of the European Parliament focused their praise and criticism on key aspects such as cohesion funds, the Common Agricultural Policy and defence spending. Here's where they stand
In most of the tweets by MEPs, the hashtag #Eubudget goes together with #FutureofEurope, pointing to the strong symbolic value of this MFF. In particular it could be seen as a new chapter in the neverending crisis of the EU after Brexit, or rather simply an acknowledgement of the resizing of the political project.
Common Agricultural Policy and cohesion funds are bound together in most of the tweets. Irish MEP Seán Kelly and EP vice-president Dimitrios Papadimoulis voiced demands for a greater focus on CAP and cohesion funds. A stronger claim was set forth by Irish MEP Liadh Ní Riada, defining the cuts to these two budget lines as "not acceptable" and voicing simultaneously her position against the increase in defence and military spending. A stronger take was aired by Romanian MEP and ECR group member Laurentiu Rebega: in his view "5% less for #Agriculture means consigning European producers to the grave. It also means less food for all of us." S&D Maria João Rodrigues and Emilian Pavel envisage a fight for cohesion not to be sacrificed.
#EUbudget: positive and negative keywords as observed with the QuoteFinder
Concerning the budget for environmental issues, José Inácio Faria praised the increase by 50% to the LIFE program and the advances on the non-recyclable plastics tax, while Peter van Dalen expressed satisfaction for the mainstreaming of climate change. In the opposite direction goes the remark from S&D member Maria João Rodrigues, stressing how climate-change policies , territorial divergences and Sustainable Development Goals are far from being adequately reflected in the EU budget proposal.
As expected, there is substantial disagreement about the means to ensure external-borders control: while ECR member Bernd Kölmel warns that "10,000 Frontex officials alone cannot guarantee an integrated migration policy", Petr Ježek (ALDE) notes the huge budget increases for external-border control. The increase in military spending also provoked strong criticism from Nikos Chountis .
Last but not least, the need to condition funding on respect of the rule of law has been voiced by both Guy Verhofstadt and Viviane Reding , among others.
Marzia Bona
OBC Transeuropa


ERL bagged a prestigious Turnkey Project for Distribution Automation system of various Distribution Substations from Brihanmumbai Electric Supply and Transport undertaking, Mumbai amid stiff competition.
What gave us the edge was our strategic pricing and optimised solution in line with local competition. The USP on our side was target, focus, team work and effective leadership. The scope of work included supply, installation and commissioning of control centresn and automation equipment including telecom (viz communication between substations and control centre).


French president-elect Emmanuel Macron won an offer of support from Socialist ex-prime minister Manuel Valls on Tuesday as he and his aides worked on strategy ahead of parliamentary elections that will be crucial to his ambitious reform plans.
The 39-year-old centrist's emphatic election victory over the anti-European Union Marine Le Pen of the National Front on Sunday brought relief to France's EU allies and financial markets.
But, once he has moved into the Elysee Palace next week, Macron faces the task of securing a second election victory in June for his start-up party, now renamed "En Marche la République" or "Republic on the Move", in order to get the majority needed to implement his plans for economic recovery.
Successive center-right and center-left governments have failed to pull France out of deep economic malaise which includes slow growth, high unemployment of around 10 percent and dwindling competitiveness.
Macron's "En Marche" party currently has no seats in parliament, though an opinion poll last week predicted it would emerge as the largest in the parliamentary elections next month.
A majority would provide Macron with a decent chance of implementing a blueprint for lower state spending, higher investment and reform of the tax, labor and pensions systems.
Politicians from the traditional parties in France have taken on the air of survivors from a ship-wreck following Macron's triumph which in particular dealt a death blow to the Socialists. Their candidate, Benoit Hamon, secured only six per cent of the vote in the first round on April 23.
Some key members of the centrist arm of The Republicans appear ready to override the party hierarchy and work closely with Macron.
But a strong element in The Republicans is eyeing the possibility of a power-sharing arrangement with him in government, if the conservatives perform well in June. On past form in French politics this leaves an incumbent president unable to control economic policy.
Tuesday's offer by Valls to stand for "En Marche" in the two-stage legislative elections in June is the first high-profile defection since Macron's election win and could be a boost for him.
As a pro-business prime minister under outgoing President Francois Hollande, Valls is a kindred spirit of Macron who worked in his government as economy minister.
But Macron will be cautious about inviting too many prominent former Socialists into his movement as that would lend ammunition to conservative opponents portraying his administration as a continuation of Hollande's unpopular rule.


From subatomic particles to superclusters of galaxies, nature has nested hierarchial fractal-like organization (R.L. Oldershaw). Earlier I discussed formation of isotopic superlattices due to self organizational dynamics among isotopes (A.A. Berezin, SolidStComm, 1988). Informationally (in spirit of ``Maxwell's demon'' engine), formation of isotopic superlattices can be inferred from Maximum Entropy Principle (C.E. Shannon, E.T. Jaynes). In spite that effects of gravitation for isotopes (due to their nuclear mass difference) are very small, they can, nevertheless, manifest in such subtle effects as gravitationally-induced reduction (collapse) of wave functions (F. Karolyhazy, R. Penrose, A.A. Berezin). Since Planck mass (which is combination of h, G and c) is about 0.02 mg, size of desired isotopic fluctuation should be about 100 mkm (mesoscipic). Experimentally, isotopic correlations, micron and sub-millimeter isotopic fluctuations, isotopic clusters and isotopic fractal-type distribution can be probed by Rayleigh scattering (sampling at various wavelengths) and/or such high electric field effects as hopping conductivity (B. Ya. Shklovsky) in which isotopic clusters act as trapping or scattering centers. Other aspects of purposeful isotopic structuring (isotopic engineering) include isotopic fiber optics (A.A. Berezin) when core and cladding has varied (step or gradual) isotopic content which causes total internal reflection and light confinement.


Top Gun Hard Lock - RELOADED PC. . Unfortunately Top Gun s combat is . yes working this too only i forgot add the Top-Gun-Save-fix.exe Facebook already got into hot water for making determinations on what was and was not news with its Trending News module while claiming it was the impartial Game Fixes: Top Gun: Hard Lock v1.0 ENGLISH No-DVD/Fixed EXE. Game Releases. ENGLISH (Retail DVD: 04-2012). Related FileForums Posts. Download Top Gun: Hard Lock V1.0 english No-dvd/fixed Exe for Top Gun: Hard Lock . english No-dvd/fixed Top Gun: Hard Lock Mission 1 Welcome To The Gulf - Duration: 4:49. Ace Combat Fan 1,857 views. 4:49. Download Free Top gun hard lock 2 Full Version. Based on Paramount Pictures' classic film, Top Gun: Hard Lock is set in the present day with a brand new story line and new wave of elite naval aviators fresh. Download TopGun.Hardlock-KaOs torrent or any other torrent from Ok i did so and the problem is gone but when trying to enter the top gun hardlock.exe nothing. Top Gun: Hard Lock v1.0 ENGLISH No-DVD/Fixed EXE; Game Releases: Some No-CD/Fixed EXE files work fine in Single Player mode but are detected to be modified.
Top Gun Hard Lock features aerial dog-fighting at jet speed, Program Files TopGun - Hardlock Uninstall.exe C: Program Files TopGun - Hardlock install.log. NOTE: I have been getting feedback that people are having problems running the GEARS.EXE program. The program runs on a PC. I don. Fancy Flying: Top Gun Hard Lock offers one of the most accessible and exciting Uninstaller: "C:\Program Files\TopGun - Hardlock\Uninstall.exe" "C:\Program. Yes. By connecting the Component video output from your high definition cable TV or satellite TV set top box to the component video inputs of the Colossus Video games keep getting more complex and visually appealing, so it's no wonder more people are drawn to them nowadays. But this new era of compelling digital. Top Gun: Hard Lock. SI comments Facebook comments. . Wondershare fantashow 3.0 .exe; Ultimate sign wizard; Mobile photo enhancer 64bit; Top. Info updated Top Gun Hard Lock Download PC Game Highly Compressed Direct Download Latest Version . Download This is a list of characters from the Mega Man series. In Japan, the Mega Man series is known as Rockman.
Описание игры «Mortal Kombat 9» Эта легендарная игра продолжает пленять сердца любителей. David Joo, was one of few Korean store owners who was involved in gun fights to keep looters out of their stores. Top Gun: Hard Lock thrusts you right into combat manoeuvres with the deftness and swagger of a true Top Gun a unique Hard Lock mode where.


The specification of a software system must include all relevant static and dynamic aspects of the domain. Dynamic aspects are usually specified by means of a behavioral schema consisting of a set of system operations that the user may execute to update the system state. To be useful, such a set must be complete (i.e. through these operations, users should be able to modify the population of all elements in the class diagram) and executable (i.e. for each operation, there must exist a system state over which the operation can be successfully applied). A manual specification of these operations is an error-prone and time-consuming activity. Therefore, the aim of this paper is to present a strategy for the automatic generation of a basic behavior schema. Operations in the schema are drawn from the static aspects of the domain as defined in the UML class diagram and take into account possible dependencies among them to ensure the completeness and executability of the operations.We believe our approach is especially useful in a Model-Driven Development setting, where the full implementation of the system is derived from its specification. In this context, our approach facilitates the definition of the behavioral specification and ensures its quality obtaining, as a result, an improved code generation phase.
CitationAlbert, M. [et al.]. Automatic generation of basic behavior schemas from UML class diagrams. "Software and systems modeling", 01 Gener 2010, vol. 9, núm. 1, p. 47-67.


text:
Cascade Skyline Gondola
Cheam Industrial Lands Reclamation Project
Landfill Remediation
Cheam Cannabis Co.
Copper Raven Capital
Cheam Enterprises Inc. (CEI) is the operating company for CFN Holdings LP – the wholly-owned economic development corporation of Cheam First Nation. CEI has a mandate from the community to increase revenues and employment opportunities for the membership. The company has numerous partnerships place, across a variety of industry sectors, exploring sustainable growth and development opportunities in the traditional territory of the Cheam First Nation.
The Xwchíyò:m (Cheam) have lived in S'ólh Téméxw (Our Land) for thousands of years in the Rosedale area of the Upper Fraser Valley region of British Columbia, Canada. The name Cheam means "wild strawberry place". This describes a place near the Cheam First Nation CFN community where wild strawberries have always been known to grow.
Cheam First Nation borders both the north and south banks of the Fraser River, and is home to 354 people with another 200 off Reserve.
Cheam First Nation is a self-governing community that is a part of the greater Stó:lō First Nation. Cheam Enterprises Inc. Cheam Enterprises Inc. is the community-owned entity aimed at participating in the local mainstream economy within Cheam's traditional territory. CEI is actively working to progress community driven and owned economic development and growth for the betterment of all Cheam people, including future generations.
Our Territory
Since time immemorial, the Cheam people have existed as a group of families within the people of the Pélhoxwlh (Pilalt) Tribe. The Pélhoxwlh tribe share customs and interests with other Coast Salish tribes. According to Coast Salish concepts of land tenure and territoriality, the water, land, air and resources of S'ólh Téméxw are their birthright.
To maintain the history of enterprise which has sustained The Xwchíyò:m for thousands of years in S'ólh Téméxw.
To provide economic development opportunities through ethical resource management, strengthening partnership opportunities while promoting fairness, respect, values and cultural integrity.
© CFN Holdings LP | All Rights Reserved | Website by Aroma Web Design
Virtual Town Hall Registration
CEI will be hosting two members-only Virtual Town Halls for those interested in learning more about the Cheam Industrial Lands Reclamation Project. Both Virtual Open Houses will have the same program, so members are invited to attend whichever virtual town hall they'd prefer.
Virtual Town Hall Date(Required)
Choose OneWednesday, August 11 - 5:30 p.m.Saturday, August 14 - 10:00 a.m.
Please select which Virtual Town Hall you'd like to attend. Please note: You will receive an email with the Virtual Town Hall Zoom link and meeting details the day before your chosen Virtual Town Hall date.
Questions about the Project?
Your answers to the following questions will help us better prepare for the Virtual Open House and will assure we can provide you with the information you're looking for about this project.
What would you like to better understand about the Cheam Industrial Lands Reclamation Project?
Do you have any concerns about the Industrial Lands Reclamation Project that we can speak to at the Virtual Town Hall?
How would you like us to keep you up to date on the project and its development?
Let us know you're a human and not a robot.


text:
package com.speedment.tool.propertyeditor.editor;

import com.speedment.common.injector.annotation.Inject;
import com.speedment.runtime.core.component.DbmsHandlerComponent;
import com.speedment.runtime.core.db.DbmsType;
import com.speedment.tool.config.DbmsProperty;
import com.speedment.tool.propertyeditor.PropertyEditor;
import com.speedment.tool.propertyeditor.item.ChoiceBoxItem;
import javafx.collections.ObservableList;

import java.util.stream.Stream;

import static java.util.stream.Collectors.toList;
import static javafx.collections.FXCollections.observableList;

/**
 *
 * @param <T>  the document type
 *
 * @author  Simon Jonasson
 * @since   3.0.0
 */
public class DbmsTypePropertyEditor<T extends DbmsProperty> implements PropertyEditor<T> {

    public @Inject DbmsHandlerComponent dbmsHandler;

    @Override
    public Stream<Item> fieldsFor(T document) {
        final ObservableList<String> supportedTypes = observableList(
            dbmsHandler
                .supportedDbmsTypes()
                .map(DbmsType::getName)
                .collect(toList())
        );

        return Stream.of(new ChoiceBoxItem<String>(
                "Dbms Type",
                document.typeNameProperty(),
                supportedTypes,
                "Which type of database this is. If the type you are looking " +
                "for is missing, make sure it has been loaded properly in "    +
                "the pom.xml-file."
            )
        );
    }
}

redpajama_set_name: RedPajamaGithub


text:
Home/Meet the CATCH Healthy Habits Heroes who volunteer at Allisonville Elementary
Meet the CATCH Healthy Habits Heroes who volunteer at Allisonville Elementary
Three volunteers have gone the extra mile at the Allisonville Elementary AYS (At Your School) program in Indianapolis to help kids build a healthier future.
Dorothy Summers teaches the children about healthy eating
Dorothy is so compelling as she tells the children the story of Hearty Heart – a mythical intergalactic character – that some kids ask if he is real.
"Children are willing to learn about nutrition and exercise," says Dorothy, a former teacher. "I see them making changes in their attitude and awareness of their health," she says. "They notice that we volunteers are older, but still active and healthy."
Dorothy says the program has benefited her own lifestyle choices.
"I started paying attention to my health before I started with the program. Now I am sure to read labels and make note even when eating in restaurants. I stay moving as well, every day."
Grace Broten brings healthy, appealing snacks
"My work with the children is very rewarding to me, " says Grace. "They are attentive and have good and thoughtful insight on the topics we discuss."
Grace first heard about the program at a Healthy Habits for Adults class. She takes her role as the snack provider to another level. For Thanksgiving she put "Snacking on the trail" mix in colorful bags with a Thanksgiving poem on the front. She explains the nutritional value of each snack, reinforcing their knowledge of healthy choices.
Josephine Poelinitz, a retired music teacher, brings energy, music and fun
A retired music teacher, Josephine leads games and aerobic activities set to catchy tunes that are simple enough to learn quickly.
"This experience was a grand outlet for me to incorporate vocal music and movement in the activities. The children have shared some of these games and exercises with their friends."
A 20-year devotee of a plant-based diet, Josephine is concerned about the health of the country and the environment.
"Good eating habits must be established at a young age. As one first grader told us, 'I must keep my body strong so I can help take care of our planet.' The children are sharing information about good habits with their parents, relatives and friends. It gives me hope that health conditions in our country will improve."
"These volunteers have really supported each other in their roles," says Debby Wright, CATCH Healthy Habits coordinator for Indianapolis Oasis. "It is a joy to watch this team at work!"
Learn more about opportunities to volunteer with the program:
in Indianapolis, or
By Oasis Institute Webmaster|2020-01-29T20:38:19-05:00February 18th, 2016|CATCH Healthy Habits, Health, National, Volunteering|0 Comments


Seasonal pheromone response by Ips pini in northern Arizona and western Montana, U.S.A.
Source: Agricultural and Forest Entomology. 10: 189-203.
Populations of Ips pini (Say) in northern Arizona and western Montana, U.S.A., were studied to determine regional pheromone response and to evaluate seasonal shifts in that response. A range of enantiomeric blends of the attractant ipsdienol, alone and in the presence of the synergist lanierone, were tested during spring and summer seasons over several years.
Steed, Brytten E.; Wagner, Michael R. 2008. Seasonal pheromone response by Ips pini in northern Arizona and western Montana, U.S.A. Agricultural and Forest Entomology. 10: 189-203.