text:
Home Based Travel Agent Show Fort Lauderdale
Also making it easier to explore the windswept islands are nature-focused, land-based tours from Intrepid Travel. Visitors stay in comfortable. including the Las Olas Art Fair and the Fort.
Tours Specialists Inc. of Florida, a small deluxe tour operator, is now offering four FAM trips to Croatia that include transfers, hotel accommodations, sightseeing, daily breakfast and dinner.
Original review: March 7, 2019. I had to give at least 1 star to leave a review. I would rather have given none. I rented a car from Fox Rent A Car in the Chicago area on December 12th, 2018.
Find the Perfect Sitter. Find a trusted sitter near you. Browse by zip code and travel dates, and read profiles of sitters in your neighborhood.
Just 11 years later — almost a nanosecond in the life of a commercial airplane — two Airbus 380s can't find a home and are about to be broken. Throw in Providence, R.I., and Fort Lauderdale, Fla.,
Vacation Rentals In Myrtle Beach Sc By Owners Browse Cooke Realty's Ocean Isle vacation rentals for your next beach vacation. Our Ocean Isle Beach rentals include homes, condos, luxury, and pet friendly properties. The development would include event space, docks for boats, boat rentals and tours. There would be a mix. For more information, visit www.medievaltimes.com/plan-your-trip/myrtle-beach-sc. Myrtle. 109 reviews of Wild Dunes Resort
Mar 03, 2019 · Hi Jim. you can park at the Beach Park (there is a fee based on an hourly rate) and watch the ships leave from there. If you want a closer look, you can still.
Terms & Conditions All rates are per person, based on double occupancy in Canadian dollars (unless otherwise stated) New bookings only. Space and price may be.
Apr 16, 2017 · Why you should use a travel agent. Today's agent is highly trained, well-traveled and has industry contacts, just in case they need to call in a favor.
Fort Lauderdale is King of the Beach. Located about a half hour north of Miami, Fort Lauderdale is one of two major cruise hubs in southern Florida.
Is The Dunham Cloud A Good Backpacking Boot But Nick Kroll is walking away. Photograph by Ramona Rosales for. old-school snack shack that feels like it's been plucked out of a '70s Adirondacks resort. We've been hiking for a good 90 minutes. The Dunham Cloud Mid Cut Boot features waterproof leather uppers, together with robust seams. This lends good water protection and makes
Sunrise Lodge A Hilton Grand Vacations Club Enjoy an unforgettable vacation at Sunrise Lodge by Hilton Grand Vacations. Nestled in the mountainside village of the Canyons Resort, the resort offers a year-round destination for skiing, hiking, exploring and relaxation. Enjoy an unforgettable vacation at Sunrise Lodge by Hilton Grand Vacations. Nestled in the mountainside village of the Canyons Resort, the resort offers
"With wages increasing at about 2.5 percent a year, to have home prices increase almost five times that. according to the Greater Fort Lauderdale Realtors. Davie's median rose 12 percent to.
He isn't allowed to travel outside of court districts in New York, South Florida and the Washington D.C. area. He can't have a U.S. passport and must call a D.C. pretrial agent once a. the driveway.
The Hollywood-based nursing home listed Manor Oaks Nursing & Rehabilitation Center in Fort Lauderdale. to show up four times to fix the electricity. Among the agencies were the Florida Department.
594 reviews of Gate 1 Travel "More to Peru than Machu Picchu! This was our second overseas tour with Gate 1 Travel, and both of them have been excellent. The tour manager travels with you. Local tour guides provide expertise and color to each…
Hotels Bed Breakfast And Evening Meal Deals HOSTELS & AIRBNB ARE YOUR FRIEND: Unless you've managed to find a really great deal, booking a hotel or a traditional bed and breakfast might run you. Whether it's a nice dinner that evening to. 5 Star Merchant Hotel in Belfast City Centre. all together in one place so you can see what's on offer
A list of yacht crew agencies in Fort Lauderdale, Florida, USA. The crew placement agencies to register with if you are looking for work in Ft Lauderdale.
"Amenity packages have become quite unbelievable," said Frances Katzen, a new development agent at Douglas Elliman in. of Manhattan top out at 22 feet. At the 90-home Four Seasons Residences Fort.
Even with more buyers actively shopping, don't take your first interested buyers lightly, as there will likely be fewer who show interest in your home as time. partner at MMD Realty, based in Fort.
Find things to do in Fort Lauderdale – Discover tourist attractions, schedule tours, plan fun vacation sightseeing activities and book them all on Expedia.
Aviation officers were called to remove him, and videos show him being forcibly dragged off the plane. It resulted in injuries that sent him to the hospital. Richard and Linda Bell were on a United.
Transat' Transat 48-hour Sales include Transat Tuesdays, Grand Luxury and Famili. Take advantage of great travel deals to the South.
Fort Lauderdale to San Juan Dec 6 – 14, 2019, 8 NIGHTS: Crystal Serenity: Fares from $2,595 £2,246 More Info Fares are cruise only, per guest based on double occupancy and must be booked by APR 30, 2019.: View This Voyage: San Juan to Miami Dec 14 – 22, 2019, 8 NIGHTS: Crystal Serenity: Fares from $2,525 £2,186 More Info Fares are cruise only, per guest based on double occupancy and must be.
Vacation Condo Rentals In San Antonio Texas Hotels Bed Breakfast And Evening Meal Deals HOSTELS & AIRBNB ARE YOUR FRIEND: Unless you've managed to find a really great deal, booking a hotel or a traditional bed and breakfast might run you. Whether it's a nice dinner that evening to. 5 Star Merchant Hotel in Belfast City Centre. all together in one place
Best Place For A Vacation In Virgin Islands Driving A Rental A Car For Mexico Vacation All Inclusive Vacations To Turks And Caicos Mexico all-inclusive vacations & resorts. Discover Mexico's ecological, historical, and cultural wonderland on your next family vacation, honeymoon, group getaway, or couples retreat. David McClung, president of Baxter Travel Media (left), presents the awards for 2017 Agents' Choice Awards for
That its familiar setting — in a loving home and what appears. (c)2019 the Sun Sentinel (Fort Lauderdale, Fla.) Visit the Sun Sentinel (Fort Lauderdale, Fla.) at www.sun-sentinel.com Distributed.
When we originally had the idea to travel, we considered a seven-month adventure. My parents live in Florida, and airlines in Miami and Fort Lauderdale offered dirt-cheap overseas flights. We left.
Now $268 (Was $̶3̶1̶2̶) on TripAdvisor: Manhattan Tower Apartment Hotel, Fort Lauderdale. See 219 traveler reviews, 486 candid photos, and great deals for Manhattan Tower Apartment Hotel, ranked #5 of 131 hotels in Fort Lauderdale and rated 5 of 5 at TripAdvisor.
And lastly, before I turn the call back to Jason, I want to talk about the new Celebrity Edge that will be launched in November sailing out of Fort Lauderdale. are focused on doing other things.
NEXT WEEK: The rapid growth of international passenger flights from Miami and Fort Lauderdale. and international travel, global air cargo and logistics have generated a huge demand for.
Passengers evacuate flight to Fort Lauderdale after emergency landing in Newark. A flight to Fort Lauderdale from Montreal with 189 people aboard was forced to make an emergency landing in Newark.
"Flights to Fort Lauderdale and Boston have fallen by almost a third, and to San Francisco by more than a quarter," said Suzanne Perry, from travel site. there is not quite the same value for.
News, Sports, Weather, Traffic and Miami's Best. Digital Update: CBS4's Ted Scouten On Former Officer Nouman Raja VerdictFormer Palm Beach Gardens police officer Nouman Raja was found guilty of.
Experience our redesigned Courtyard Fort Lauderdale North/Cypress Creek hotel for business or leisure. We conveniently provide a shuttle to anywhere in a 3 mile radius.
In east Fort Lauderdale, Wells said she once. Step back, and think about what suits the home, said Garston, who held photo exhibits to sell homes in the Hamptons. She once held a picnic to show off.
Save big on a wide range of Fort Lauderdale hotels! Fort Lauderdale is known for its beaches, bars and shopping. Find hotels and other accommodations near Aventura Mall, Bonnet House Museum and Gardens, and Hugh Taylor Birch State Park and book today. Other sights in the area include Historic Stranahan House Museum.
Original review: March 6, 2019. In January 2019 we spent a week at Westgate Vacation Villas Resort. We were curious about a timeshare so we took the tour and heard the sales pitch.
Beginning as far back as 2001, Epstein lured a steady stream of underage girls to his Palm Beach mansion to engage in nude massages, masturbation, oral sex and intercourse, court and police records.
*Savings based on all holiday package bookings with Flight + Hotel on CheapTickets.com from July 2017 to December 2017, as compared to the price of the same components booked separately.
Police say Shelby's home address is in Missouri City, Texas. He does not have a criminal record in Florida, state records show. After being evaluated. innocence," Daniel Rosenberg, Shelby's Fort.
According to predictions by the U.S. Travel Association, leisure travel is expected to grow 1.3% in 2013, as Americans take almost 1.6 million trips that range more than 50 miles from home or include.


With the bold gold lines and clear colourings of the outer edge contrasting strikingly with the brilliant white of the fine bone china, we believe we have created a design that combines the most beautiful of modern, contemporary design with the finest traditions of an old English craft. Being created at the heart of the English Potteries, our craftsmen are able to draw on over two centuries of tradition in order to ensure that our Balmoral 16cm gold plate remains unique and infused with luxury, care and attention.
Whether used for bread to accompany the meal, or for cake and scones at afternoon tea, the Balmoral 16cm gold side plate is an essential part of any dinner service.


text:
import * as THREE from 'three';
import * as TWEEN from 'tween.js';

import Config from '../config';
import * as CountryDataHelpers from '../utils/countryDataHelpers';
import { transformSVGPath } from '../three/d3-threeD';
import { log } from '../LogTerminal';

export function createCountriesGeometry(worldMap) {
  var data = worldMap.dataCountries;
  var start = Date.now();
  var globalPointCount = 0;
  var numVisaRequirementsFound = 0;

  worldMap.countriesObject3D = new THREE.Object3D();
  worldMap.countries = [];
  worldMap.trianglesNumTotal = 0;
  worldMap.countryDropdownChoices = [];

  const countriesUsed = [];

  // features = countries
  var i;
  var destinations;
  for(i = 0; i < data.features.length; i++) {
    var feature = data.features[i];

    if(feature.properties.NAME !== 'Antarctica') { //  && feature.properties.name === 'Germany'
      // convert SVG data to three.js Shapes array (all shapes in one country):
      var t = worldMap.geo.path(feature);

      if(t !== undefined) {
        var shapes = transformSVGPath( t );

        var pointCount = 0;
        for(var p = 0; p < shapes.length; p++) {
          pointCount += shapes[p].getPoints().length;
        }
        globalPointCount += pointCount;

        var country = {
          name: feature.properties.NAME_LONG,
          nameSort: feature.properties.NAME_SORT,
          sovereignt: feature.properties.SOVEREIGNT,
          brkName: feature.properties.BRK_NAME, // in disputed areas
          noteBrk: feature.properties.NOTE_BRK, // in disputed areas
          gdp: feature.properties.GDP_MD_EST,
          gdpPerCapita: feature.properties.GDP_PER_CAPITA,
          population: feature.properties.POP_EST,
          type: feature.properties.TYPE,
          disputed: feature.disputed === true,

          properties: feature.properties,
          shapes,
          destinations: [],
          numDestinationsFreeOrOnArrival: 0,
          numSourcesFreeOrOnArrival: 0,
          color: new THREE.Color(Config.colorCountryDefault),
          colorLast: new THREE.Color(Config.colorCountryDefault)
        };

        if(country.disputed) {
          country.name = country.brkName === country.name
            ? country.name + ' (' + country.type + ')'
            : country.name + '/' + country.brkName + ' (' + country.type + ')';
        }

        if(!country.disputed) {
          for(var r = 0; r < worldMap.visaRequirements.countries.length; r++) {
            // 199 nationalities travelling to 243 (?) countries, assuming nationals from a country don't need a visa to the sovereignty's main country:
            // if(CountryDataHelpers.matchDestinationToCountryName(country.name_long, worldMap.visaRequirements.countries[r].name) || CountryDataHelpers.matchDestinationToCountryName(worldMap.visaRequirements.countries[r].name, country.name)) {

            const requirementsCountry = worldMap.visaRequirements.countries[r];

            if(
              CountryDataHelpers.matchDestinationToCountryName(country.name, requirementsCountry.name) ||
              CountryDataHelpers.matchDestinationToCountryName(requirementsCountry.name, country.name) ||
              CountryDataHelpers.matchDestinationToCountryName(country.sovereignt, requirementsCountry.name) ||
              CountryDataHelpers.matchDestinationToCountryName(requirementsCountry.name, country.sovereignt)
            ) {
              // log('Loading visa requirements for: ' + country.name);
              country.destinations = requirementsCountry.destinations;
              numVisaRequirementsFound++;
            }
          }
        }

        worldMap.countries.push(country);

        // if(country.destinations.length === 0) {
        //   console.error('Geometry: No visa requirements found for: ' + country.name);
        // }

        if(!country.disputed) {
          countriesUsed.push(country.name);

          if(CountryDataHelpers.isCountry(country)) {
            var text = country.name;
            if(text === 'United States') {
              text += ' (USA)';
            } else if(text === 'United Kingdom') {
              text += ' (UK)';
            }
            worldMap.countryDropdownChoices.push({text, value: country.name});
          } else {
            worldMap.countryDropdownChoices.push({text: country.name + ' (' + country.sovereignt + ')', value: country.name});
          }
        }

        // log("Geometry" + country.name + " | shapes: " + shapes.length + ", total points: " + pointCount);

      }
    }
  }

  // console.log(JSON.stringify(countriesUsed.sort()));

  // console.log(worldMap.countries);

  var d;
  // var country;
  // var countriesString = '';
  // remove destinations who's country doesn't exist:
  for(i = 0; i < worldMap.countries.length; i++) {
    destinations = worldMap.countries[i].destinations;
    var destinationsNew = [];
    for(d = 0; d < destinations.length; d++) {
      country = CountryDataHelpers.getCountryByName(worldMap.countries, destinations[d].d_name);
      if(country !== null) {
        destinationsNew.push(destinations[d]);
      }
    }
    worldMap.countries[i].destinations = destinationsNew;

    // countriesString += (i + 1) + ' ' + worldMap.countries[i].name;
    // if(i < worldMap.countries.length - 1) {
    //   countriesString += '\n';
    // }

  }
  // console.log(countriesString);

  if(!country.disputed) {
    // count visa-free destinations:
    for(i = 0; i < worldMap.countries.length; i++) {
      destinations = worldMap.countries[i].destinations;

      worldMap.countries[i].numDestinationsFreeOrOnArrival = 0;
      for(d = 0; d < destinations.length; d++) {
        if(destinations[d].visa_required === 'no' || destinations[d].visa_required === 'on-arrival' || destinations[d].visa_required === 'free-eu'
           // || destinations[d].visa_required === 'evisa' || destinations[d].visa_required === 'evisitor' || destinations[d].visa_required === 'eta'
          ) {
          worldMap.countries[i].numDestinationsFreeOrOnArrival++;
        }

      }

      // add main sovereignty, if exists:
      var mainCountry = CountryDataHelpers.getCountryByName(worldMap.countries, worldMap.countries[i].sovereignt);
      if(mainCountry && mainCountry.sovereignt !== worldMap.countries[i].name) {
        worldMap.countries[i].numDestinationsFreeOrOnArrival++;
      }

      if(worldMap.countries[i].numDestinationsFreeOrOnArrival > worldMap.maxNumDestinationsFreeOrOnArrival) {
        worldMap.maxNumDestinationsFreeOrOnArrival = worldMap.countries[i].numDestinationsFreeOrOnArrival;
      }

    }

    // count countries from where people can come without a visa > find most open countries:
    for(i = 0; i < worldMap.countries.length; i++) {
      // if(worldMap.countries[i].sovereignt === worldMap.countries[i].name) {
      if(CountryDataHelpers.isCountry(worldMap.countries[i])) {
        destinations = worldMap.countries[i].destinations;
        for(d = 0; d < destinations.length; d++) {
          if(destinations[d].visa_required === 'no' || destinations[d].visa_required === 'on-arrival' || destinations[d].visa_required === 'free-eu') {
            country = CountryDataHelpers.getCountryByName(worldMap.countries, destinations[d].d_name);
            if(country !== null) {
              country.numSourcesFreeOrOnArrival++;
            }
          }
        }
      }
    }

    for(i = 0; i < worldMap.countries.length; i++) {
      if( worldMap.countries[i].numSourcesFreeOrOnArrival > worldMap.maxNumSourcesFreeOrOnArrival ) {
        worldMap.maxNumSourcesFreeOrOnArrival = worldMap.countries[i].numSourcesFreeOrOnArrival;
      }
      if( worldMap.countries[i].gdp > worldMap.maxGDP ) {
        worldMap.maxGDP = worldMap.countries[i].gdp;
      }
      if( worldMap.countries[i].population > worldMap.maxPopulation ) {
        worldMap.maxPopulation = worldMap.countries[i].population;
      }
      worldMap.totalPopulation += worldMap.countries[i].population;
      worldMap.countries[i].gdpPerCapita = worldMap.countries[i].gdp / worldMap.countries[i].population * 1000000;
      if( worldMap.countries[i].gdpPerCapita > worldMap.maxGDPPerCapita ) {
        if(worldMap.countries[i].gdp > 100) {
          worldMap.maxGDPPerCapita = worldMap.countries[i].gdp / worldMap.countries[i].population * 1000000;
          // log( worldMap.countries[i].name );
          // log( 'population: ' + worldMap.countries[i].population );
          // log( 'gdp: ' + worldMap.countries[i].gdp );
          // log( 'gdp per capita: ' + worldMap.maxGDPPerCapita );
        }
      }
    }
  }

  worldMap.countryDropdownChoices.sort((a, b) => {
    var aName = a.text.toLowerCase();
    var bName = b.text.toLowerCase();
    return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
  });

  var stringLoaded = worldMap.countries.length + ' countries and territories loaded (' + globalPointCount + ' points total) from \'' + Config.mapDataFile + '\'';
  if(Config.mergeDataFromMapDataFile2) {
    stringLoaded += ' and \'' + Config.mapDataFile2 + '\'';
  }
  log('Geometry: ' + stringLoaded);

  log('Geometry: visa requirements matched from ' + worldMap.visaRequirements.countries.length + ' sovereignties to ' + numVisaRequirementsFound + ' countries from \'' + Config.visaRequirementsFile + '\'');
  // log('Max number of visa-free destinations: ' + worldMap.maxNumDestinationsFreeOrOnArrival);
  // log('Max number of visa-free sources: ' + worldMap.maxNumSourcesFreeOrOnArrival);
  // log('Total population: ' + worldMap.totalPopulation.formatNumber(0));

  var m = new THREE.Matrix4();
  var m1 = new THREE.Matrix4();
  var m2 = new THREE.Matrix4();
  m1.makeRotationX( Config.globeRotationX );
  m2.makeRotationY( Config.globeRotationY );
  m.multiplyMatrices( m1, m2 );

  for(i = 0; i < worldMap.countries.length; i++) {
    worldMap.countries[i].colorByFreeDestinations = CountryDataHelpers.getCountryColorByFreeDestinations(worldMap.countries[i].numDestinationsFreeOrOnArrival, worldMap.maxNumDestinationsFreeOrOnArrival);
    worldMap.countries[i].colorByFreeSources = CountryDataHelpers.getCountryColorByFreeSources(worldMap.countries[i].numSourcesFreeOrOnArrival, worldMap.maxNumSourcesFreeOrOnArrival);
    worldMap.countries[i].colorByGDP = CountryDataHelpers.getCountryColorByGDP(worldMap.countries[i], worldMap.maxGDP);
    worldMap.countries[i].colorByGDPPerCapita = CountryDataHelpers.getCountryColorByGDPPerCapita(worldMap.countries[i], worldMap.maxGDPPerCapita);
    worldMap.countries[i].colorByPopulation = CountryDataHelpers.getCountryColorByPopulation(worldMap.countries[i], worldMap.maxPopulation);

    if(Config.extrudeEnabled) {
      // create extruded geometry from path Shape:
      worldMap.countries[i].geometry = new THREE.ExtrudeGeometry( worldMap.countries[i].shapes, {
        // amount: Config.extrudeDepth * 10,
        // amount: 0.5 + worldMap.getPopulationRatio(worldMap.countries[i].properties) * 100,
        amount: worldMap.countries[i].numDestinationsFreeOrOnArrival / worldMap.maxNumDestinationsFreeOrOnArrival * 100,
        bevelEnabled: false
      } );
    } else {
      // create flat ShapeGeometry from path Shape:
      worldMap.countries[i].geometry = new THREE.ShapeGeometry( worldMap.countries[i].shapes );
    }

    // subtesselate surface:
    if(Config.tesselationEnabled) {
      var tessellateModifier = new THREE.TessellateModifier( Config.tesselationMaxEdgeLength ); // 2
      for( var n = 0; n < Config.tesselationIterations; n++ ) { // 10
        tessellateModifier.modify( worldMap.countries[i].geometry );
      }
    }

    // 2D Geometry:
    var k;
    worldMap.countries[i].geometry2D = worldMap.countries[i].geometry.clone();
    for(k = 0; k < worldMap.countries[i].geometry2D.vertices.length; k++) {
      worldMap.countries[i].geometry2D.vertices[k].x += Config.mapOffsetX;
      worldMap.countries[i].geometry2D.vertices[k].y = -worldMap.countries[i].geometry2D.vertices[k].y + Config.mapOffsetY;
      if(worldMap.countries[i].disputed) {
        // draw disputed areas on top:
        worldMap.countries[i].geometry2D.vertices[k].z += 0.1;
      }
    }

    worldMap.trianglesNumTotal += worldMap.countries[i].geometry.faces.length;

    // 2D points meshes (for showing country border on hover):
    worldMap.countries[i].border2D = new THREE.Object3D();
    worldMap.countries[i].borderDisputed2D = new THREE.Object3D();
    worldMap.countries[i].center2D = new THREE.Vector3();
    var vertexCount = 0;
    for(var s = 0; s < worldMap.countries[i].shapes.length; s++) {
      var pointsGeometry = worldMap.countries[i].shapes[s].createPointsGeometry();
      for(k = 0; k < pointsGeometry.vertices.length; k++) {
        pointsGeometry.vertices[k].x += Config.mapOffsetX;
        pointsGeometry.vertices[k].y = -pointsGeometry.vertices[k].y + Config.mapOffsetY;
        pointsGeometry.vertices[k].z += 0.1;

        worldMap.countries[i].center2D.add(pointsGeometry.vertices[k]);
        vertexCount++;
      }
      worldMap.countries[i].border2D.add(new THREE.Line( pointsGeometry, Config.materialCountryBorder ));

    }
    worldMap.countries[i].center2D.divideScalar(vertexCount);
    CountryDataHelpers.correctCenter(worldMap.countries[i]);

    // 2D points meshes (for disputed country border, always visible):
    if(worldMap.countries[i].disputed) {
      worldMap.countries[i].borderDisputed2D = new THREE.Object3D();
      for(s = 0; s < worldMap.countries[i].shapes.length; s++) {
        pointsGeometry = worldMap.countries[i].shapes[s].createPointsGeometry();
        for(k = 0; k < pointsGeometry.vertices.length; k++) {
          pointsGeometry.vertices[k].x += Config.mapOffsetX;
          pointsGeometry.vertices[k].y = -pointsGeometry.vertices[k].y + Config.mapOffsetY;
          pointsGeometry.vertices[k].z += 0.15;
        }
        worldMap.countries[i].borderDisputed2D.add(new THREE.Line( pointsGeometry, Config.materialCountryBorderDisputed ));
      }
    }

    // 3D Geometry:
    worldMap.countries[i].geometry3D = worldMap.countries[i].geometry.clone();
    for(k = 0; k < worldMap.countries[i].geometry.vertices.length; k++) {
      var spherical = worldMap.geo.projection.invert([worldMap.countries[i].geometry.vertices[k].x, worldMap.countries[i].geometry.vertices[k].y]);
      spherical[0] = THREE.Math.degToRad(spherical[0]);
      spherical[1] = THREE.Math.degToRad(spherical[1]);

      // worldMap.countries[i].geometry3D.vertices[k].x = Config.globeRadius * Math.cos(spherical[0]) * Math.cos(spherical[1]);
      // worldMap.countries[i].geometry3D.vertices[k].y = - Config.globeRadius * Math.sin(spherical[1]);
      // worldMap.countries[i].geometry3D.vertices[k].z = Config.globeRadius * Math.sin(spherical[0]) * Math.cos(spherical[1]);

      worldMap.countries[i].geometry3D.vertices[k].x = Config.globeRadius * Math.cos(spherical[0]) * Math.cos(spherical[1]);
      worldMap.countries[i].geometry3D.vertices[k].y = -Config.globeRadius * Math.sin(spherical[1]);
      if(worldMap.countries[i].geometry.vertices[k].z < Config.extrudeDepth) {
        worldMap.countries[i].geometry3D.vertices[k].z = Config.globeRadius * Math.sin(spherical[0]) * Math.cos(spherical[1]);
        // worldMap.countries[i].geometry3D.vertices[k].multiplyScalar(0.5);
        if(worldMap.countries[i].disputed) {
          // draw disputed areas on top:
          worldMap.countries[i].geometry3D.vertices[k].multiplyScalar(1.0005);
        }
      } else {
        worldMap.countries[i].geometry3D.vertices[k].z = Config.globeRadius * Math.sin(spherical[0]) * Math.cos(spherical[1]);
        worldMap.countries[i].geometry3D.vertices[k].multiplyScalar(1.002);
        if(Config.extrudeEnabled) {
          worldMap.countries[i].geometry3D.vertices[k].multiplyScalar( 1 + worldMap.countries[i].numDestinationsFreeOrOnArrival / worldMap.maxNumDestinationsFreeOrOnArrival * 0.5);
        }
      }
    }
    // rotate and bake transform into vertices:
    worldMap.countries[i].geometry3D.applyMatrix(m);

    worldMap.countries[i].center3D = new THREE.Vector3();
    vertexCount = 0;
    for(k = 0; k < worldMap.countries[i].geometry3D.vertices.length; k++) {
      worldMap.countries[i].center3D.add(worldMap.countries[i].geometry3D.vertices[k]);
      vertexCount++;
    }
    worldMap.countries[i].center3D.divideScalar(vertexCount);

    // worldMap.countries[i].center3D.copy(worldMap.countries[i].center2D);
    spherical = worldMap.geo.projection.invert([worldMap.countries[i].center2D.x - Config.mapOffsetX, -worldMap.countries[i].center2D.y + Config.mapOffsetY]);
    spherical[0] = THREE.Math.degToRad(spherical[0]);
    spherical[1] = THREE.Math.degToRad(spherical[1]);
    worldMap.countries[i].center3D.x = Config.globeRadius * Math.cos(spherical[0]) * Math.cos(spherical[1]);
    worldMap.countries[i].center3D.y = -Config.globeRadius * Math.sin(spherical[1]);
    worldMap.countries[i].center3D.z = Config.globeRadius * Math.sin(spherical[0]) * Math.cos(spherical[1]);
    worldMap.countries[i].center3D.applyMatrix4(m);

    // 3D points meshes (for showing country border on hover):
    worldMap.countries[i].border3D = new THREE.Object3D();
    for(s = 0; s < worldMap.countries[i].shapes.length; s++) {
      pointsGeometry = worldMap.countries[i].shapes[s].createPointsGeometry();
      for(k = 0; k < pointsGeometry.vertices.length; k++) {
        spherical = worldMap.geo.projection.invert([pointsGeometry.vertices[k].x, pointsGeometry.vertices[k].y]);

        spherical[0] = THREE.Math.degToRad(spherical[0]);
        spherical[1] = THREE.Math.degToRad(spherical[1]);

        pointsGeometry.vertices[k].x = Config.globeRadius * Math.cos(spherical[0]) * Math.cos(spherical[1]);
        pointsGeometry.vertices[k].y = -Config.globeRadius * Math.sin(spherical[1]);
        pointsGeometry.vertices[k].z = Config.globeRadius * Math.sin(spherical[0]) * Math.cos(spherical[1]);

        pointsGeometry.vertices[k].multiplyScalar(1.001); // 1.004
      }
      worldMap.countries[i].border3D.add(new THREE.Line( pointsGeometry, Config.materialCountryBorder ));
    }
    // rotate and bake transform into vertices:
    worldMap.countries[i].border3D.applyMatrix(m);

    // 3D points meshes (for disputed country border, always visible):
    if(worldMap.countries[i].disputed) {
      worldMap.countries[i].borderDisputed3D = new THREE.Object3D();
      for(s = 0; s < worldMap.countries[i].shapes.length; s++) {
        pointsGeometry = worldMap.countries[i].shapes[s].createPointsGeometry();
        for(k = 0; k < pointsGeometry.vertices.length; k++) {
          spherical = worldMap.geo.projection.invert([pointsGeometry.vertices[k].x, pointsGeometry.vertices[k].y]);

          spherical[0] = THREE.Math.degToRad(spherical[0]);
          spherical[1] = THREE.Math.degToRad(spherical[1]);

          pointsGeometry.vertices[k].x = Config.globeRadius * Math.cos(spherical[0]) * Math.cos(spherical[1]);
          pointsGeometry.vertices[k].y = -Config.globeRadius * Math.sin(spherical[1]);
          pointsGeometry.vertices[k].z = Config.globeRadius * Math.sin(spherical[0]) * Math.cos(spherical[1]);

          pointsGeometry.vertices[k].multiplyScalar(1.0015); // 1.004
        }
        worldMap.countries[i].borderDisputed3D.add(new THREE.Line( pointsGeometry, Config.materialCountryBorderDisputed ));
      }
      // rotate and bake transform into vertices:
      worldMap.countries[i].borderDisputed3D.applyMatrix(m);
    }

    worldMap.countries[i].mesh = new THREE.Mesh(worldMap.countries[i].geometry, Config.materialCountryDefault); // worldMap.countries[i].material // worldMap.materialCountryDefault
    worldMap.countries[i].mesh.name = worldMap.countries[i].name;
    worldMap.countries[i].mesh.countryObject = worldMap.countries[i];
    if(!Config.usesWebGL) {
      worldMap.countries[i].mesh.material = new THREE.MeshPhongMaterial({
        color: new THREE.Color(0xFF0000),
        transparent: false,
        wireframe: false,
        shading: THREE.SmoothShading,
        side: THREE.DoubleSide,
        overdraw: true
      });
    }

    worldMap.countriesObject3D.add(worldMap.countries[i].mesh);

  } // for worldMap.countries.length initial geometry creation end

  if(!Config.usesWebGL) {
    worldMap.scene.add(worldMap.countriesObject3D);
  }

  log('Geometry: ' + worldMap.trianglesNumTotal + ' triangles total');

  var scaleStart = 0.0;
  worldMap.countriesObject3D.scale.set(scaleStart, scaleStart, scaleStart);
  worldMap.countriesObject3D.rotation.y = -Math.PI * 6.0;

  log('Geometry: creating meshes took ' + (Date.now() - start) + ' ms');

};

export function updateCountriesGeometry(worldMap, computeFaceNormals) {
  // log('Geometry.updateCountriesGeometry()');

  var i;
  var k;
  for(i = 0; i < worldMap.countries.length; i++) {
    for(k = 0; k < worldMap.countries[i].geometry.vertices.length; k++) {
      worldMap.countries[i].geometry.vertices[k].copy(worldMap.countries[i].geometry2D.vertices[k]);
      worldMap.countries[i].geometry.vertices[k].mix(worldMap.countries[i].geometry3D.vertices[k], worldMap.animationProps.interpolatePos);
    }
    // worldMap.countries[i].geometry.verticesNeedUpdate = true; // required to update mesh, also for picking to work

    /*
    worldMap.countries[i].geometry.normalsNeedUpdate = true;
    worldMap.countries[i].geometry.uvsNeedUpdate = true;
    worldMap.countries[i].geometry.elementsNeedUpdate = true;
    worldMap.countries[i].geometry.tangentsNeedUpdate = true;
    worldMap.countries[i].geometry.lineDistancesNeedUpdate = true;
    worldMap.countries[i].geometry.colorsNeedUpdate = true;
    worldMap.countries[i].geometry.buffersNeedUpdate = true;
    */

    worldMap.countries[i].geometry.computeBoundingSphere(); // required for picking to work after updating vertices
    if(computeFaceNormals) worldMap.countries[i].geometry.computeFaceNormals(); // required for shading to look correct

  }

  // transform sphere:
  if(worldMap.sphere) {
    for(k = 0; k < worldMap.sphere.geometry.vertices.length; k++) {
      worldMap.sphere.geometry.vertices[k].copy(worldMap.sphereGeometry2D.vertices[k]);
      worldMap.sphere.geometry.vertices[k].mix(worldMap.sphereGeometry3D.vertices[k], worldMap.animationProps.interpolatePos * worldMap.animationProps.interpolatePos);
    }
    worldMap.sphere.geometry.verticesNeedUpdate = true; // required to update mesh

    worldMap.sphere.geometry.computeBoundingSphere(); // required for picking to work after updating vertices
    worldMap.sphere.geometry.computeFaceNormals(); // required for shading to look correct
  }
};

export function createCountriesBufferGeometry(worldMap) {
  worldMap.bufferGeometry = new THREE.BufferGeometry();

  var positions = new Float32Array( worldMap.trianglesNumTotal * 3 * 3 );
  var normals = new Float32Array( worldMap.trianglesNumTotal * 3 * 3 );
  var colors = new Float32Array( worldMap.trianglesNumTotal * 3 * 3 );

  var color = new THREE.Color();
  color.set(Config.colorCountryDefault);

  var index = 0;
  var i, f;
  for(i = 0; i < worldMap.countries.length; i++) {
    var vertices = worldMap.countries[i].geometry.vertices;

    for(f = 0; f < worldMap.countries[i].geometry.faces.length; f++) {
      var face = worldMap.countries[i].geometry.faces[f];

      // positions

      positions[ index ] = vertices[ face.a ].x;
      positions[ index + 1 ] = vertices[ face.a ].y;
      positions[ index + 2 ] = vertices[ face.a ].z;

      positions[ index + 3 ] = vertices[ face.b ].x;
      positions[ index + 4 ] = vertices[ face.b ].y;
      positions[ index + 5 ] = vertices[ face.b ].z;

      positions[ index + 6 ] = vertices[ face.c ].x;
      positions[ index + 7 ] = vertices[ face.c ].y;
      positions[ index + 8 ] = vertices[ face.c ].z;

      // normals

      normals[ index ] = face.normal.x;
      normals[ index + 1 ] = face.normal.y;
      normals[ index + 2 ] = face.normal.z;

      normals[ index + 3 ] = face.normal.x;
      normals[ index + 4 ] = face.normal.y;
      normals[ index + 5 ] = face.normal.z;

      normals[ index + 6 ] = face.normal.x;
      normals[ index + 7 ] = face.normal.y;
      normals[ index + 8 ] = face.normal.z;

      // colors

      colors[ index ] = color.r;
      colors[ index + 1 ] = color.g;
      colors[ index + 2 ] = color.b;

      colors[ index + 3 ] = color.r;
      colors[ index + 4 ] = color.g;
      colors[ index + 5 ] = color.b;

      colors[ index + 6 ] = color.r;
      colors[ index + 7 ] = color.g;
      colors[ index + 8 ] = color.b;

      index += 9;

    }
  } // for worldMap.countries.length buffer geometry creation end

  worldMap.bufferGeometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
  worldMap.bufferGeometry.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) );
  worldMap.bufferGeometry.addAttribute( 'color', new THREE.BufferAttribute( colors, 3 ) );

  worldMap.bufferGeometry.verticesNeedUpdate = true;
  worldMap.bufferGeometry.computeBoundingSphere();
  // worldMap.bufferGeometry.computeVertexNormals();

  var mesh = new THREE.Mesh( worldMap.bufferGeometry, Config.materialMap );
  worldMap.scene.add( mesh );

};

export function updateCountriesBufferGeometry(worldMap) {
  // log('Geometry.updateCountriesBufferGeometry()');

  var positions = worldMap.bufferGeometry.getAttribute( 'position' ).array;
  var normals = worldMap.bufferGeometry.getAttribute( 'normal' ).array;
  var colors = worldMap.bufferGeometry.getAttribute( 'color' ).array;

  var m = new THREE.Matrix4();
  var m1 = new THREE.Matrix4();
  var m2 = new THREE.Matrix4();
  m1.makeRotationY( worldMap.countriesObject3D.rotation.y );
  m2.makeScale( worldMap.countriesObject3D.scale.x, worldMap.countriesObject3D.scale.y, worldMap.countriesObject3D.scale.z );
  m.multiplyMatrices( m1, m2 );

  var color = new THREE.Color();
  var v = new THREE.Vector3();

  var index = 0;
  var i, f;
  for(i = 0; i < worldMap.countries.length; i++) {
    var vertices = worldMap.countries[i].geometry.vertices;

    // log( worldMap.countries[i].name );
    // log( worldMap.countries[i].visa_required );

    color.set(worldMap.countries[i].color);

    for(f = 0; f < worldMap.countries[i].geometry.faces.length; f++) {
      var face = worldMap.countries[i].geometry.faces[f];

      // positions

      v.copy( vertices[ face.a ] );
      v.applyMatrix4(m);

      positions[ index ] = v.x;
      positions[ index + 1 ] = v.y;
      positions[ index + 2 ] = v.z;

      v.copy( vertices[ face.b ] );
      v.applyMatrix4(m);

      positions[ index + 3 ] = v.x;
      positions[ index + 4 ] = v.y;
      positions[ index + 5 ] = v.z;

      v.copy( vertices[ face.c ] );
      v.applyMatrix4(m);

      positions[ index + 6 ] = v.x;
      positions[ index + 7 ] = v.y;
      positions[ index + 8 ] = v.z;

      // normals

      normals[ index ] = face.normal.x;
      normals[ index + 1 ] = face.normal.y;
      normals[ index + 2 ] = face.normal.z;

      normals[ index + 3 ] = face.normal.x;
      normals[ index + 4 ] = face.normal.y;
      normals[ index + 5 ] = face.normal.z;

      normals[ index + 6 ] = face.normal.x;
      normals[ index + 7 ] = face.normal.y;
      normals[ index + 8 ] = face.normal.z;

      // colors

      colors[ index ] = color.r;
      colors[ index + 1 ] = color.g;
      colors[ index + 2 ] = color.b;

      colors[ index + 3 ] = color.r;
      colors[ index + 4 ] = color.g;
      colors[ index + 5 ] = color.b;

      colors[ index + 6 ] = color.r;
      colors[ index + 7 ] = color.g;
      colors[ index + 8 ] = color.b;

      index += 9;

    }
  } // for worldMap.countries.length buffer geometry update end

  worldMap.bufferGeometry.attributes.position.needsUpdate = true;
  worldMap.bufferGeometry.attributes.normal.needsUpdate = true;
  worldMap.bufferGeometry.attributes.color.needsUpdate = true;

  // worldMap.bufferGeometry.colorsNeedUpdate = true;
  worldMap.bufferGeometry.computeBoundingSphere();
  // worldMap.bufferGeometry.computeVertexNormals();

};

export function updateCountriesBufferGeometryColors(worldMap) {
  // log('Geometry.updateCountriesBufferGeometryColors()');

  var colors = worldMap.bufferGeometry.getAttribute( 'color' ).array;

  var color = new THREE.Color();

  var index = 0;
  var i, f;
  for(i = 0; i < worldMap.countries.length; i++) {
    color.set(worldMap.countries[i].color);

    for(f = 0; f < worldMap.countries[i].geometry.faces.length; f++) {
      colors[ index ] = color.r;
      colors[ index + 1 ] = color.g;
      colors[ index + 2 ] = color.b;

      colors[ index + 3 ] = color.r;
      colors[ index + 4 ] = color.g;
      colors[ index + 5 ] = color.b;

      colors[ index + 6 ] = color.r;
      colors[ index + 7 ] = color.g;
      colors[ index + 8 ] = color.b;

      index += 9;

    }
  } // for worldMap.countries.length buffer geometry update end

  worldMap.bufferGeometry.attributes.color.needsUpdate = true;

};

export function createSphere(worldMap) {
  worldMap.sphere = new THREE.Mesh( new THREE.PlaneGeometry( 700, 700, 24, 96 ), Config.materialSphere );
  worldMap.sphere.name = 'sphere';
  worldMap.scene.add( worldMap.sphere );
  worldMap.sphere.visible = Config.sphereVisible;

  worldMap.sphereGeometry2D = worldMap.sphere.geometry.clone();
  var k;
  for(k = 0; k < worldMap.sphereGeometry2D.vertices.length; k++) {
    worldMap.sphereGeometry2D.vertices[k].x -= 20;
    worldMap.sphereGeometry2D.vertices[k].y -= 90;
    worldMap.sphereGeometry2D.vertices[k].z -= Config.extrudeDepth * 2.0;
  }

  worldMap.sphereGeometry3D = worldMap.sphere.geometry.clone();

  for(k = 0; k < worldMap.sphere.geometry.vertices.length; k++) {
    var spherical = worldMap.geo.projection.invert([ -worldMap.sphere.geometry.vertices[k].x, worldMap.sphere.geometry.vertices[k].y * 2.0 + 250 ]); //  * 2.0 + 260

    spherical[0] = THREE.Math.degToRad(spherical[0]);
    spherical[1] = THREE.Math.degToRad(spherical[1]);

    worldMap.sphereGeometry3D.vertices[k].x = (Config.globeRadius - 1) * Math.cos(spherical[0]) * Math.cos(spherical[1]);
    worldMap.sphereGeometry3D.vertices[k].y = -(Config.globeRadius - 1) * Math.sin(spherical[1]);
    worldMap.sphereGeometry3D.vertices[k].z = (Config.globeRadius - 1) * Math.sin(spherical[0]) * Math.cos(spherical[1]);

    /*
    if(worldMap.sphereGeometry3D.vertices[k].z < 0.0) {
      worldMap.sphereGeometry3D.vertices[k].z = Config.globeRadius * Math.sin(spherical[0]) * Math.cos(spherical[1]);
      //worldMap.sphereGeometry3D.vertices[k].multiplyScalar(0.5);
    } else {
      worldMap.sphereGeometry3D.vertices[k].z = Config.globeRadius * Math.sin(spherical[0]) * Math.cos(spherical[1]);
      //worldMap.sphereGeometry3D.vertices[k].multiplyScalar(1.04);
    }
    */

  }
  // rotate and bake transform into vertices:
  var m = new THREE.Matrix4();
  m.makeRotationX( THREE.Math.degToRad(45) );
  worldMap.sphereGeometry3D.applyMatrix(m);

};

export function getIntersects(worldMap, mouse) {
  var vector = new THREE.Vector3();
  vector.copy(mouse);
  vector.unproject( worldMap.camera );

  worldMap.raycaster.set( worldMap.camera.position, vector.sub( worldMap.camera.position ).normalize() );

  var intersects = worldMap.raycaster.intersectObjects( worldMap.countriesObject3D.children );
  intersects.sort( function( a, b ) { return a.distance - b.distance; } );

  return intersects;
};

export function createLines(worldMap) {
  // log('Geometry.createLines()');

  if(worldMap.mode !== 'destinations' && worldMap.mode !== 'sources') {
    return;
  }

  if(worldMap.selectedCountry || worldMap.selectedDestinationCountry) {
    var points2D;
    var points3D;
    var line;
    var c;

    deleteLinesObject(worldMap);

    worldMap.linesObject = new THREE.Object3D();
    worldMap.scene.add(worldMap.linesObject);

    if(worldMap.selectedCountry && worldMap.selectedDestinationCountry) {
      points2D = [];
      points3D = [];

      if(worldMap.mode === 'destinations') {
        points2D.push( worldMap.selectedCountry.center2D );
        points2D.push( worldMap.selectedDestinationCountry.center2D );

        points3D.push( worldMap.selectedCountry.center3D );
        points3D.push( worldMap.selectedDestinationCountry.center3D );
      } else {
        points2D.push( worldMap.selectedDestinationCountry.center2D );
        points2D.push( worldMap.selectedCountry.center2D );

        points3D.push( worldMap.selectedDestinationCountry.center3D );
        points3D.push( worldMap.selectedCountry.center3D );
      }

      worldMap.selectedDestinationCountry.spline2D = new THREE.Spline( points2D );
      worldMap.selectedDestinationCountry.spline3D = new THREE.Spline( points3D );

      worldMap.selectedDestinationCountry.splineLength = points2D[0].distanceTo(points2D[1]);
      worldMap.selectedDestinationCountry.splineHeight = worldMap.selectedDestinationCountry.splineLength * 0.25;
      worldMap.selectedDestinationCountry.geometrySpline = new THREE.Geometry();

      line = new THREE.Line( worldMap.selectedDestinationCountry.geometrySpline, CountryDataHelpers.getLineMaterial(worldMap.selectedDestinationCountry), THREE.LineStrip );
      worldMap.linesObject.add(line);

    } else if(worldMap.selectedCountry && !worldMap.selectedDestinationCountry) {
      if(worldMap.mode === 'destinations') {
        for(c = 0; c < worldMap.countries.length; c++) {
          if(worldMap.countries[c].visa_required === 'no' || worldMap.countries[c].visa_required === 'on-arrival' || worldMap.countries[c].visa_required === 'free-eu') {
            points2D = [];
            points2D.push( worldMap.selectedCountry.center2D );
            points2D.push( worldMap.countries[c].center2D );
            worldMap.countries[c].spline2D = new THREE.Spline( points2D );

            points3D = [];
            points3D.push( worldMap.selectedCountry.center3D );
            points3D.push( worldMap.countries[c].center3D );
            worldMap.countries[c].spline3D = new THREE.Spline( points3D );

            worldMap.countries[c].splineLength = points2D[0].distanceTo(points2D[1]);
            worldMap.countries[c].splineHeight = worldMap.countries[c].splineLength * 0.25;
            worldMap.countries[c].geometrySpline = new THREE.Geometry();

            line = new THREE.Line( worldMap.countries[c].geometrySpline, CountryDataHelpers.getLineMaterial(worldMap.countries[c]), THREE.LineStrip );
            worldMap.linesObject.add(line);
          }
        }
      }

    } else if(!worldMap.selectedCountry && worldMap.selectedDestinationCountry) {
      if(worldMap.mode === 'sources') {
        for(c = 0; c < worldMap.countries.length; c++) {
          if(worldMap.countries[c].visa_required === 'no' || worldMap.countries[c].visa_required === 'on-arrival' || worldMap.countries[c].visa_required === 'free-eu') {
            points2D = [];
            points2D.push( worldMap.selectedDestinationCountry.center2D );
            points2D.push( worldMap.countries[c].center2D );
            worldMap.countries[c].spline2D = new THREE.Spline( points2D );

            points3D = [];
            points3D.push( worldMap.selectedDestinationCountry.center3D );
            points3D.push( worldMap.countries[c].center3D );
            worldMap.countries[c].spline3D = new THREE.Spline( points3D );

            worldMap.countries[c].splineLength = points2D[0].distanceTo(points2D[1]);
            worldMap.countries[c].splineHeight = worldMap.countries[c].splineLength * 0.25;
            worldMap.countries[c].geometrySpline = new THREE.Geometry();

            line = new THREE.Line( worldMap.countries[c].geometrySpline, CountryDataHelpers.getLineMaterial(worldMap.countries[c]), THREE.LineStrip );
            worldMap.linesObject.add(line);
          }
        }
      }
    }

    worldMap.animationProps.lineAnimatePos = 0;
    worldMap.animationProps.lineAnimateOffset = 0;

    worldMap.tweenLines = new TWEEN.Tween(worldMap.animationProps)
      .to({lineAnimatePos: 1}, Config.lineAnimateDuration)
      .onStart(function() {
      })
      .onUpdate(function(time) {
        // worldMap.updateLines(time);
      })
      .easing(TWEEN.Easing.Sinusoidal.Out)
      .start();
  }

};

export function updateLines(worldMap) {
  // log('Geometry.updateLines()');

  worldMap.animationProps.lineAnimateOffset += Config.lineAnimateSpeed * worldMap.clock.getDelta();
  worldMap.animationProps.lineAnimateOffset %= Config.lineDashOffsetLimit;

  if(worldMap.selectedCountry || worldMap.selectedDestinationCountry) {

    for(var c = 0; c < worldMap.countries.length; c++) {
      var offset = worldMap.animationProps.lineAnimateOffset / worldMap.countries[c].splineLength;

      // if(worldMap.countries[c].visa_required === 'no' || worldMap.countries[c].visa_required === 'on-arrival' || worldMap.countries[c].visa_required === 'free-eu') {
      if(worldMap.countries[c].geometrySpline) {
        var subdivisions = 30;
        for(var i = 0; i < subdivisions; i++) {
          var index;
          index = i / subdivisions * worldMap.animationProps.lineAnimatePos;
          index += offset;
          if(worldMap.mode === 'sources') {
            index = 1 - index;
          }
          index = Math.min(index, 1);
          index = Math.max(index, 0);

          var position2D = worldMap.countries[c].spline2D.getPoint( index );
          var position3D = worldMap.countries[c].spline3D.getPoint( index );

          var z = 0;

          if(index < 0.5) {
            z = TWEEN.Easing.Sinusoidal.Out( index * 2 ) * worldMap.countries[c].splineHeight;
          } else {
            z = TWEEN.Easing.Sinusoidal.Out( 1 - (index - 0.5) * 2 ) * worldMap.countries[c].splineHeight;
          }

          worldMap.countries[c].geometrySpline.vertices[ i ] = new THREE.Vector3( position2D.x, position2D.y, position2D.z );
          worldMap.countries[c].geometrySpline.vertices[ i ].z += z;

          var v3D = new THREE.Vector3( position3D.x, position3D.y, position3D.z );
          v3D.setLength(Config.globeRadius + z);

          worldMap.countries[c].geometrySpline.vertices[ i ].lerp(v3D, worldMap.animationProps.interpolatePos);

        }
        worldMap.countries[c].geometrySpline.verticesNeedUpdate = true;
        worldMap.countries[c].geometrySpline.lineDistancesNeedUpdate = true;
        worldMap.countries[c].geometrySpline.computeLineDistances();
      }
    }
  }
};

export function deleteLinesObject(worldMap) {
  // log('Geometry.deleteLinesObject()');

  if(worldMap.linesObject) {
    worldMap.scene.remove(worldMap.linesObject);
    worldMap.linesObject = null;
  }
};

export function toScreenXY(camera, pos3D) {
  var v = pos3D.project( camera );
  var percX = (v.x + 1) / 2;
  var percY = (-v.y + 1) / 2;

  var left = percX * window.innerWidth;
  var top = percY * window.innerHeight;

  return new THREE.Vector2(left, top);
};

redpajama_set_name: RedPajamaGithub


text:
Home > Key ARB Decisions > Third Circuit Revives In-House Attorney's Whistleblower Claim
Third Circuit Revives In-House Attorney's Whistleblower Claim
By Steven J. Pearlman, Harris Mufson and McKenzie A. Wilson on April 18, 2017 Posted in Dodd Frank, False Claims Act, SEC, SOX Whistleblower Decisions, State-Specific Whistleblower Claims
On April 12, 2017, the Third Circuit partially revived a former in-house attorney's whistleblower retaliation lawsuit against his previous employer. Danon v. Vanguard Group, Inc., No. 16-cv-2881.
Plaintiff, a former in-house tax lawyer, previously raised retaliation claims against the Company in New York State Court under the New York False Claims Act, alleging he was discharged in retaliation for informing senior employees of his belief that the Company was violating certain tax and corporate laws. The state court dismissed the case based on the plaintiff's failure to demonstrate that the Company knew he was involved in any protected conduct at the time of his termination. Plaintiff then filed suit against the Company in the District Court for the Eastern District of Pennsylvania alleging whistleblower retaliation in violation of SOX, Dodd-Frank, and the Pennsylvania Whistleblower Law. His claims again were dismissed because the court determined he was precluded from asserting the Company's knowledge of his allegedly protected conduct (we previously wrote about the SEC's amicus brief to the district court in support of the plaintiff's arguments here).
Plaintiff appealed the dismissal of his Dodd-Frank claim to the Third Circuit. The Third Circuit reversed, concluding that while the state court had considered whether he had adequately pled his whistleblower claim, it had not actually determined whether, in fact, the Company knew about his allegedly protected activities. Further, the Court noted that Plaintiff's federal complaint alleged Company knowledge, and thus did not suffer from the safe defects as his state court complaint. The court vacated the dismissal of the Dodd-Frank claim, and remanded for further proceedings.
The Third Circuit court has yet to address the critical underlying issue, raised by the Company in October of 2016, of whether an employee who complains internally but neglects to raise complaints with the SEC is protected from retaliation under Dodd-Frank. Now that the district court must consider the merits of the claim on remand, the Third Circuit will likely confront the issue.
As noted, this case involves an attorney whistleblower—a dynamic that carries its own set of risks. Links to our prior posts about the complexities of litigation brought by attorney whistleblowers can be accessed here, here and here.
Tags: False Claims Act, SEC, SOX, whistleblower

redpajama_set_name: RedPajamaCommonCrawl


text:
Britney Spears Reveals She Is A 'Coronation Street' Fan
14/10/2013 12:50pm BST
Ooh, we do love a bit of 'Coronation Street' here at HuffPost UK Entertainment, but we were never expecting to hear that Britney Spears shares our adoration for the residents of Weatherfield.
The 'Toxic' singer has revealed she is a big, big fan of the ITV soap.
Who'd have thunk it, eh?
After touching down in the UK on Sunday night, Britters was devo to realise she had missed the special episode screened last night.
"I am so upset I missed the Corrie special on TV!!!" she tweeted.
Fans soon begun questioning whether Britney had made a typo, suspecting she was referring to the Cory Monteith tribute episode of 'Glee', which recently aired in the US.
However, her spokesperson confirmed to Digital Spy that she was indeed referring to the soap, and always tries to watch it when she is in the UK.
Sunday night's episode saw David Platt find out whether he was the father of wife Kylie's baby, following her affair with his brother, Nick.
Corrie's Rovers Return
Meanwhile, Britney is in the UK to promote her new single 'Work Bitch', and is set to appear on Alan Carr's 'Chatty Man' this Friday.
Fingers crossed for that 'Corrie' cameo now, too.
Style Evolution: Britney Spears
uktv uk celebrityCoronation StreetBritney Spearsuktvsoap


Josh was born and raised on the south coast of England and from a young age found a passion for people which lead him down a path of becoming a magician. While performing at weddings, corporate events and private parties Josh became acquainted with a sailor who inspired him to learn the ropes.
Josh soon found himself stepping on board a yacht sailing back from Antigua to the UK and from then on, covering thousands of miles, he knew then where his heart lay.
He obtained his Yachtmaster Offshore Certificate in the Solent and then took a contract working as a flotilla skipper down the Adriatic coast of Croatia and the Greek islands. He has also worked in a yard refurbishing boats and is a qualified sailing instructor.
Josh is a warm-hearted sailor who always wants to please, he insists that he hasn't lost his magic hands so be sure to be entertained.
Jade was born in a small city of Chichester on the south coast of England. Through her childhood years it became clear to her that she loved to be around people and any social events she could be involved in. Growing up on the coast the yachting industry was never far behind. At the age of 20 she studied at UKSA on the Isle of Wight to be a yacht stewardess as she knew sailing and travelling was where she wanted to be. She then worked as a hostess on flotilla holidays sailing along the Adriatic coast. Adding to her studies she then went on to follow her passion for cooking. She qualified as a chef at the Ashburton cookery school where she learnt many new skills and dishes to take her to the next level.
Jade has a love for finding new ingredients and flavours in different countries and learning new cuisine. You can be sure to be greeted with a freshly baked cake when arriving on board Craftsmans Art.
Jade will listen to your needs and take in any health issues and dietary requirements you may have.


text:
Dodgers Tender Contracts To All Of Their Arbitration Eligible Players
by Hunter Thompson 12/02/2017, 12:51 PM
Coming into the offseason, the Dodgers had nine players eligible for salary arbitration. On Friday it was announced that all nine were tendered contracts before the deadline.
One player, Yimi Garcia, has already accepted the contract and avoided arbitration.
The Dodgers signed Yimi Garcia to a one-year contract, avoiding arbitration.
— J.P. Hoornstra (@jphoornstra) December 1, 2017
It was reported by Bill Plunkett that Garcia's contract is worth $630,000. Yimi pitched in parts of three seasons for the Dodgers, showing great promise before injuries knocked him out of action. Garcia ended up needing to have Tommy John surgery which kept him out for all of 2017.
The other eight players who were tendered contracts include Alex Wood, Yasmani Grandal, Joc Pederson, Kiké Hernandez, Tony Cingrani, Luis Avilan, Josh Fields, and Pedro Baez. These players till have time to negotiate their contracts, though if they can't reach an agreement with the Dodgers then salary arbitration hearings will take place in February. All of these players played a part in the Dodgers having the best record in baseball, and all expect Baez and Avilan made contributions in the postseason.
Alex Wood had a breakout season in 2017, going 16-3 with a 2.72 ERA and 151 strikeouts over 152.1 innings. Wood was acquired from the Braves in 2015 and had an up and down career with the Dodgers prior to 2017. Alex started the season in the bullpen, but after a couple great performances paired with Rich Hill's early season blister issues the 26 year old moved to the rotation and stayed there all season. Wood had a rough start in the NLCS, allowing 3 runs over 4.2 innings, but pitched well in the World Series allowing just 1 run over 7.2 innings.
Yasmani Grandal had a solid, yet underwhelming 2017 season, where he slashed .247/.308/.459 with 22 home runs and 27 doubles. Grandal was the primary catcher throughout the regular season, but lost that role to Austin Barnes in the postseason. With the emergence of Barnes, it was rumored that the Dodgers were willing to trade the 29-year old catcher.
Joc Pederson is coming off a rough season. The 25-year old slashed .212/.331/.407 with just 11 home runs in 2017, and ended up being optioned to AAA late in the season. However, Pederson was added to the playoff roster before the NLCS and ended up being a key contributor in the World Series, hitting going 6 for 18 with 3 home runs. Hopefully the World Series success will translate to a consistent 2018 season for the outfielder.
Kiké Hernandez had a bounce-back year in 2017 after a very tough 2016. The 26-year old had 11 home runs, 24 doubles, and 2 triples in a which accounted for 37 of his 64 total hits. While only slashing .215/.308/.421, the young utility man made his presence felt with his 37 extra-base hits while playing 7 different positions throughout the season. He also went 8 for 25 with 3 home runs in the postseason.
Tony Cingrani was acquired from the Reds at the deadline and quickly turned his season around. After struggling in Cincinnati for the better part of 2017, the 28 year old lefty excelled with the Dodgers, pitching to a 2.79 ERA over 19.1 innings. Look for him to be a key part of the Dodgers bullpen in 2018.
Luis Avilan had a solid season, pitching to a 2.93 ERA with 52 strikeouts over 46 innings pitched. Avilan, acquired in 2015 as a part of the same deal as Alex Wood, also had his best season as a Dodger in 2017. Despite this, he was left off the postseason roster after the acquisitions of Tony Watson and Tony Cingrani.
Josh Fields had a tremendous start to 2017, but had his struggles in the second half and finished with a 2.84 ERA over 57 innings. The right-hander made 4 appearances in the postseason, allowing 2 solo home runs and recording just 3 outs.
Pedro Baez, like Fields, started 2017 looking like a new pitcher. The 29-year old was nothing short of dominant early in the season, but fell off badly down the stretch and finished with a 2.95 ERA over 64 innings pitched. Due to his late season struggles, the right-hander was left off the postseason roster.
How do you feel about hopefully all of these nine players being set to return? Let us know in the comments!
[button color="red" size="big" alignment="center" rel="follow" openin="newwindow" url="https://www.dodgersnation.com/yasiel-puigs-success-and-maturity-are-changing-how-people-view-him-ht0696/2017/12/01/"]Yasiel Puig's Success And Maturity Are Changing How People View Him[/button]
Written by Hunter Thompson
Born in Pennsylvania but comes from a long line of Dodger fans from their Brooklyn days. Extremely passionate about the Dodgers and baseball in general. News writer and Twittercaster for Dodger games. Follow me on Twitter @Officialism27 for more Dodgers talk!
Hate to give up on Baez, but never feel comfortable when he is on the mound.
I love that Yasmani can stay a Dodger & hopefully Baez can greatly improve, yes this is great news!!


text:
Q: Strange template struct definition I'm exploring the boost library code and found the following strange struct definition.
struct add_ints_only
{
    template<typename T>
    struct result;

    template <typename State, typename T>
    struct result<add_ints_only(State, T)> // what's going on here?
    {
        typedef typename boost::remove_const<
            typename boost::remove_reference<State>::type>::type type;
    };

    template <typename State, typename T>
    State
    operator()(State const& state, T const& /*x*/) const
    {
        return state;
    }

    int
    operator()(int state, int x) const
    {
        return x + state;
    }
};

What is it for?

A: result is partially specialized on the function type add_ints_only(State, T).
The purpose is that code that wants to know the type that the functor add_ints_only returns with particular argument types can inquire by writing:
typedef typename add_ints_only::result<add_ints_only(arg1_type, arg2_type)>::type
  result_type;

e.g.
template<typename U, typename V> void foo(U u, V v) {
  typename add_ints_only::result<add_ints_only(arg1_type, arg2_type)>::type
    result = add_ints_only()(u, v);
}

This is useful for functors that can return different types depending on their operator() argument types.

A: I guess you are looking to some Boost.Fusion stuff or something similar.
In particular add_ints_only is model of Polymorphic Function Object concept.
Polymorphic Function Object provides polymorphic operator(), which may be overloaded or may be a template. Result type of operator() may differ based on it's parameter types.
It is similar in something to Adaptable Unary Function concept from STL, which should provide nested ::result_type.
But result type of Polymorphic Function Object may differ depending on arguments types passed to operator(). So, some more powerfull facility than single ::result_type should be used to get result type based on types of arguments of operator().
template <typename State, typename T>
struct result<add_ints_only(State, T)> // ...

This syntax is partial specialization of class.
add_ints_only(State, T)

Is type of function which returns add_ints_only and takes Stage and T as a parameter.
Itself, this type is not not meaningfull - you are not going to return add_ints_only. It is just convenient form of type argument passing - it looks like call of add_ints_only function. And it allow to have specialization for different numbers of arguments.
Here how it works:
live demo
#include <boost/utility/result_of.hpp>
#include <typeinfo>
#include <iostream>
#include <ostream>

using namespace std;

struct PolymorphicFunctionObject
{
    template<typename T> struct result;

    template<typename Arg>
    struct result< PolymorphicFunctionObject(Arg) >
    {
        typedef Arg type;
    };

    template<typename Arg1,typename Arg2>
    struct result< PolymorphicFunctionObject(Arg1,Arg2) >
    {
        typedef Arg2 type;
    };

    template<typename Arg>
    Arg operator()(Arg t) const
    {
        return t;
    }

    template<typename Arg1,typename Arg2>
    Arg2 operator()(Arg1 t1,Arg2 t2) const
    {
        return t2;
    }
};

int main()
{
    cout << typeid
    (
        PolymorphicFunctionObject::result< PolymorphicFunctionObject(int) >::type
    ).name() << endl;
    // Output is - int

    cout << typeid
    (
        PolymorphicFunctionObject::result< PolymorphicFunctionObject(char,double) >::type
    ).name() << endl;
    // Output is - double

    // -----------------
    // Or using boost::result_of, which queries ::result internally:

    cout << typeid
    (
        boost::result_of< PolymorphicFunctionObject(short) >::type
    ).name() << endl;
    // Output is - short

    cout << typeid
    (
        boost::result_of< PolymorphicFunctionObject(char,float) >::type
    ).name() << endl;
    // Output is - float

    // ------------------
    // Or using C++11 decltype:
    cout << typeid
    (
        decltype( PolymorphicFunctionObject()( long() ) )
    ).name() << endl;
    // Output is - long

    cout << typeid
    (
        decltype( PolymorphicFunctionObject()( long(),unsigned() ) )
    ).name() << endl;
    // Output is - unsigned int

}

As you can see, result type querying syntax:
boost::result_of< PolymorphicFunctionObject(short) >::type
boost::result_of< PolymorphicFunctionObject(char,float) >::type

Looks similar to normal function call.
P.S. In C++11 this stuff is not need, due to presence of decltype, which can be used to get type of result automatically. For instance:
decltype( PolymorphicFunctionObject()( long(),unsigned() ) )

redpajama_set_name: RedPajamaStackExchange


If you have been around languages used to develop desktop and web software, you know their shortcomings. Before I started using PHP for web development I used Classic ASP. Yes, you can use Classic ASP to connect to a database and display the contents of tables. Can it do much more than that? Not really. Years ago, I found myself maintaining a website that was developed in Classic ASP and I was jealous of PHP web developers but I did not want to start over and redevelop the entire site in PHP. Time passed and I stopped working on that site and I created a new website using PHP. One of the best decisions of my life.
PHP is open source. That means that a lot of people care about the language and want to see it get better. It also means that the language will grow with technological changes instead of being limited like Clssic ASP was. Classic ASP was forgotten about.
PHP is widely used. Facebook uses PHP. Think about that. The second most trafficked site on the entire Internet. If a Harvard genius went with it, there must be a good reason (or reasons) why he chose to use it. He most likely chose PHP because it's widely supported and it's open source.
Options. Are you a procedural programmer? You can use PHP. Are you an object oriented programmer? You can use PHP. Not all programmers care about great design. Sometimes they just want to put something together as quickly as possible and put it up on the Internet. This is where the option of using procedural programming comes in handy. What if you are working with a team for a site that gets tons of traffic? Then going object oriented would be the better approach so that new developers can acquaint themselves with the classes and methods that are being used by the developers already. Then they can extend the classes and methods to suit their needs.
Functions. Want to do something but don't want to reinvent the wheel? Check out the PHP manual online and there is probably a function for what you are trying to do. Yes, this also means that PHP also has a bunch of functions that you will never use but that is not really a bad thing. As long as your site loads quickly, it is not a problem.


text:
import React, { Component } from 'react';
import axios from 'axios';

class Ability extends React.Component {
    constructor(props) {
        super(props);
        this.api = props.api;
    }

    updateMembers() {
        this.props.updateMembers();
    }

    setAbility(e) {
        e.preventDefault();
        let userName = this.props.member.name;
        let ability = e.target.dataset.ability;
        console.log(ability);
        axios.post(this.api.getRouteObj('allow').getPath() , {user:userName, ability_name:ability})
            .then((response) => {
                this.updateMembers();
            }).catch(error => {});
    }

    removeAbility(e) {
        e.preventDefault();
        let userName = this.props.member.name;
        let ability = e.target.dataset.ability;
        console.log(ability);
        axios.post(this.api.getRouteObj('disallow').getPath() , {user:userName, ability_name:ability})
            .then((response) => {
                this.updateMembers();
            }).catch(error => {});
    }

    render() {
        return(

                {this.props.abilities.manage === false &&
                    Set as manager
                }
                {this.props.abilities.manage !== false &&
                    Remove manager role
                }

        )
    }
}

export default Ability;


Leverkusen - Bayer 04 Leverkusen have been dealt a blow with the news that influential midfielder Gonzalo Castro will not play again this season because of a knee injury.
The 27-year-old "suffered a torn meniscus in his knee in training, requires surgery and will miss the rest of the season", the club announced via Twitter on Wednesday. He underwent a successful operation on the injury on Thursday afternoon.
Castro has been one of the Werkself's most reliable performers this season, scoring twice and providing seven assists in his 20 appearances, 19 of which have been starts.
Following Matchday 29's 4-0 win over Hannover 96, Leverkusen's seventh successive league win, Roger Schmidt's side are now third in the table, occupying the final automatic UEFA Champions League qualifying place. They are next in action in the Rhineland derby away at 1. FC Köln on 25 April.


Now with a new, even more effective formula: The best fat burner with natural ingredients made in Germany.
LIPO 100 is so unique that it is suitable for all weight loss goals: For people who want to lose a few pounds quickly for that sculpted beach body, for people who want to lose large amounts of weight permanently or for trained athletes who just want to define their muscles a little more, e.g. all bodybuilders.
"My metabolism was noticeably faster and I could see significant results in the mirror after just a few days." Figen Özdemir, IFBB Pro and state-certified sport and gymnastic teacher, uses LIPO 100 by Body Attack.


This jungle temple mansion spawn seed is going to be all you need for an awesome survival or creative Minecraft Xbox One Edition game. There is a woodland mansion close to spawn and a jungle biome with a jungle temple close by. You couldn't ask for a better spawn point!
- And a witches hut on spawn map.
- The jungle temple which is on the edge of a massive jungle biome.
- Then you have the Woodland Mansion not very far off.
I include coordinates for a couple more villages, jungle temples, and a desert temple which are not to far from spawn either. Another great thing about this map is the abundance of different biomes including the abundance of jungle biome close to spawn.
In order for you to create the same seed use the seed number given below (including the "-") as well as the same biome scale and map size for the Minecraft Xbox One Edition. If you don't use the same map size and biome scale you won't get the same seed.


Upon arrival at the Ben Gurion Airport in Tel Aviv, your guide will greet you and we will assist you with the first formalities… Transfer to Jerusalem for check-in at your hotel.
Drive to Bethlehem and visit the ancient Church of Nativity, the very place where Jesus was born, with the Catholic St. Catherine Church housing the tombs of the Forty Innocent Children, as well as the Milk Grotto. Drive to Beit Sahur to visit the Church of the Shepherds Fields. Returning to Jerusalem, we ascend the Mt. of Olives to the Church of Ascension, from where we walk to the Pater Noster Church, one of the first 4 churches built by St. Helen. Now, just like Our Lord in the past, we can enjoy a panoramic view of the Old City of Jerusalem! A steep road takes us down to the Dominus Flevit Church, where the Lord wept over the destruction of the Temple. We will end this day at the Garden of Gethsemane, humbly meditating under the ancient Olive Trees, remembering Our Lord's wailing in the Church of All Nations… Overnight in Jerusalem.
Our Old City Tour starts with a re-experience of that dramatic Friday, when Jesus was crucified. We start at the Bethesda Pools, where Jesus healed the crippled man who couldn't walk for decades, and the St. Anna Church, famous for its long-lasting echo. Following Our Lord on the Way of the Cross – the "Via Dolorosa", we stop by the Ecce Homo Arch, and walk through the colorful "Suq" (Bazaar) of the Old City to the Church of the Holy Sepulcher, where we will see the Hill of Calvary (Golgotha) and the empty Tomb of Jesus. Walking through the Jewish Quarter we will see the well-preserved Roman Cardo. We exit the Old City through the Zion Gate to visit the "Upper Room" (also known as the Cenacle or Caenaculum) where Jesus and his disciples had the Last Supper together, King David's Tomb and the St. Peter in Gallicantu Church, where Jesus was imprisoned in the House of Caiaphas the High Priest. We end this eventful day at the famous Western ("Wailing" Wall) –the last remnants of the Jewish Temple. Today different Jews from all over the world come here to worship. Overnight in Jerusalem.
This day is dedicated to the New City of Jerusalem: After breakfast we drive to Ein Kerem, the picturesque village where tradition says that John the Baptist was born. Visit to Yad Vashem, Israel's Holocaust Memorial, following by a visit to the known Menorah (Candelabra) situated in front of the Knesset Building, housing Israel's Parliament. At the Israel Museum we will visit the 1:50 Model of Jerusalem during the Second Temple Period (the Time of Jesus) and the "Shrine of the Book" where the original "Dead Sea Scrolls" are exhibited. We end the day at the colorful (and noisy…) Machane Yehuda Market, Jerusalem's "real" parliament… Overnight in Jerusalem.
We leave the hotel and driver along the Dead Sea to Jericho, where we shall see the Sycamore Tree, on which tradition says that Zacchaeus the Tax-collector climbed in order to see The Lord, and Elisha's spring. A modern cable-car will take us up to the Mount of Temptation, where the monks built their monastery hanging from a cliff, on the spot where Jesus was tempted by the Devil. A short drive will bring us to the Allenby (King Hussein) Bridge, where we cross the border to Jordan. On the other side, our Jordanian guide and bus will be waiting for us, assisting us with the formalities. Drive to Amman, where we will spend our first night in Jordan.
After breakfast we will conduct a short city-tour through Jordan's capital, Amman, including the Citadel and the Roman Theater. Then we drive along Jordan's main road to the town Madaba, to visit the famous St. George Church, where a 6th Century mosaic-map of the Holy Land can be seen. Then, like Moses before us, we will take a look at the Promised Land from Mt. Nebo and also take a close look at the colorful, vivid mosaics of Mt. Nebo Monastery. Further on Moses' footsteps, we drive along the biblical "Kings Highway" to the "Rock of Edom" – Petra! Overnight in Petra.
A full day visit of the "Rose-Red City" Petra, including the famous "Siq", the "Treasury", the Roman-Nabathean Theater and many of the mysterious monuments carved by the ancient Nabathean in the red sandstone. In the afternoon we will visit Moses' Spring, and head back to Amman. Overnight in Amman.
Depart Jordan through the Sheikh Hussein Bridge and cross back to Israel. After boarding the Israeli bus, we drive to Beth Shean, a well-preserved Roman-Byzantine city, one of the famous "Decapolis" where Saul, King of Israel, fell on his sword with his son Jonathan after the dramatic battle at Mt. Gilboa. We end the day at the Yardenit Baptismal site on the holy Jordan River. Overnight in Nazareth/Galilee.
We begin our visit of the Galilee in Nazareth, where we visit the Basilica of the Annunciation and the Greek-Orthodox St. Gabriel Church near Mary's Well. Visit Cana in Galilee, where Jesus performed his first miracle by turning water into wine at a wedding. Following Jesus' Footsteps we drive up a steep, winding road to Mt. Tabor with its scenic Church of the Transfiguration. After descending the mountain, we drive back to our hotel in Galilee.
Today we visit the places where Jesus acted around the Sea of Galilee: Capernaum, with Peters House and the famous Synagogue, enjoy the view from the Mt. of the Beatitudes, where the "Sermon on the Mount" was given, and the reconstructed church at Tabgha, where tradition puts the miracle of the Bread and The Fish. We will also sail on the sea in a boat similar to the boat used by Jesus and his disciples and see the Boat of the times of Jesus exhibited in the museum by Kibbutz Ginossar. Overnight in Nazareth/Galilee.
We ascend the Golan Heights to Caesarea Philippi (Baniass) – one of the sources of the holy Jordan River. The natural beauty of the spot is the scenery to the remarkable archaeological findings of Caesarea Philippi, where Jesus gave Peter the authority to be "the Rock on which I shall build my Church!" Drive up to the summit of Mount Bental. From the top of this non-active volcano you have a wide view over the Mountains of Galilee, up to Lebanon, and far over the Syrian border. This is an excellent spot to explain the geography and history of this region in the past and present. Continue to Ancient Katzrin, to view the well-preserved synagogue and town, where you can also understand daily life during Jesus' Time. For those interested, a wine-tasting session at the famous Golan Winery in Katzrin can be arranged. Overnight in Nazareth/Galilee.
Visit Tel Megiddo, one of Israel's most ancient cities, where we can find traces of fortifications left by the Canaanites, King Salomon, King Ahab, and more, as well as a very sophisticated water system, some claim was built by the king Salomon. This strategic place has always been the scenery of war, and according to John's Revelation it is here where the last battle shall take place – the battle of Armageddon. From here we drive through some Druze villages to the modern port-city Haifa, situated on the slopes of the evergreen Mt. Carmel. The view from this mountain is famous for its beauty, and time permitting, we can also visit the Carmelite monastery Stella Marris, where "Elijah's Cave" can be seen. Drive down to the Mediterranean Sea to Caesarea Maritima, the magnificent port-city built by King Herod the Great. From here St. Peter went to Rome and started with his first miracles. Near Caesarea's well-preserved theater an inscription of the procurator Pontius Pilate was found. We continue along the Mediterranean Shore to Israel's economic & cultural center, Tel Aviv, where we shall spend our last two nights.
We start the day in Old Jaffa, one of the ancient gateways to the Holy Land: Through its port the Cedar trees for Salomon's Temple were brought, the prophet Jonas tried to flee God, but most important: It was in Jaffa where Christianity began to be spread among the nations. Here St. Peter lived in the house of Simon the Tanner and had the "Vision of the Flesh", and here he made his first miracle by healing the little girl. Today Jaffa's renovated alley-ways attract many artists, who have their galleries there. We will also make a tour through the pulsating city of Tel Aviv, paying attention to the "White City", built in the early 20th Century "Bauhaus"-style, which made it a UNESCO World Heritage Site. At the end of the day we visit Emmaus, where Jesus was seen at sunset after his resurrection. This biblical scenery is a suitable place to end our journey to the Holy Land! Over-night in Tel Aviv.
Depending on your time of departure you will have some free time in Tel Aviv. Transfer to the Ben Gurion International Airport for your flight back home.


text:
Request Providing Brief Information
Select query type : -- Make a Selection -- Canada - Dependent Visa Canada - Passport New/Renew Canada - Work Permit Canada - Visitor Visa Canada - Student Visa Canada - PR & Renewals Canada - Immigration Canada - Citizenship New Zealand - Dependent Visa New Zealand - Visitor Visa New Zealand - Study in New Zealand United States - Visitor Visa United States - Student Visa United States - Dependent Visa Other Query
Explain your query :
Country Code: Phone:
Attach Resume :
Email: info@gepsi.com
(416) 843 6686, (647) 825 9775
GEPSI Immigration Services
Specialists in Immigration & Visa matters
Click Here Canadian Govt. Certified Immigration Consultant
Dependent Visa
Visitor Visa
PR & Renewals
Passport New/Renew
Predeparture Orientation
Post Landing Services
Trusted Professionals
Vacancies at Gepsi
Coaching Facility
What is IELTS
The International English Language Testing System (IELTS) is the world's most popular high-stakes English language proficiency test for study, work, and migration with more than two million tests taken in the past year.
IELTS results are recognized by more than 9,000 organizations, including educational institutions, employers, professional associations, and governments, in 135 countries
like the governments of the UK, Australia, Canada and New Zealand accept IELTS around the world.
Why choose GEPSI?
IELTS is a standardized test which requires an intensive, rigorous and carefully planned curriculum, and that's exactly what our highly qualified and trained faculties have prepared. Our curriculum goes way beyond the requirements of the tests, we also aim to mold the personality, outlook, and attitude of our students.
Trained Faculties
British Council approved test registration provider
Mock tests administered under examination conditions
Result oriented coaching
Small batch sizes
Flexible batch timings
Problem-solving sessions
Writing curating
Personalized consultation.
Test Format
The IELTS test assesses your abilities in listening, reading, writing and speaking – in less than three hours.
There are two types of IELTS test: IELTS Academic and IELTS General Training. Listening and Speaking are same for both the tests, but the subject matter of the Reading and Writing components differs depending on which test you take.
The Listening, Reading and Writing components of all IELTS tests are completed on the same day, with no breaks in between them.
The Speaking component, however, can be completed up to a week before or after the other tests. Your test center will advise.
The total test time is 2 hours and 45 minutes.
Test format – Listening (30 minutes)
You will listen to four recordings of native English speakers and then write your answers to a series of questions.
Recording 1 – A conversation between two people set in an everyday social context.
Recording 2 – A monologue set in an everyday social context, e.g. a speech about local facilities.
Recording 3 – A conversation between up to four people set in an educational or training context, e.g. a university tutor and a student discussing an assignment.
Recording 4 – A monologue on an academic subject, e.g. a university lecture.
Assessors will be looking for evidence of your ability to understand the main ideas and detailed factual information, the opinions and attitudes of speakers, the purpose of an utterance and evidence of your ability to follow the development of ideas.
Test Format-Reading (60 minutes)
The Reading component consists of 40 questions, designed to test a wide range of reading skills. These include reading for gist, reading for main ideas, reading for detail, skimming, understanding a logical argument and recognizing writers' opinions, attitudes, and purpose.
IELTS Academic Test – This includes three long texts which range from the descriptive and factual to the discursive and analytical. These are taken from books, journals, magazines, and newspapers. They have been selected for a non-specialist audience but are appropriate for people entering university courses or seeking professional registration.
IELTS General Training Test – This includes extracts from books, magazines, newspapers, notices, advertisements, company handbooks, and guidelines. These are materials you are likely to encounter on a daily basis in an English-speaking environment.
Test Format-Writing (60 minutes)
IELTS Academic test
Topics are of general interest and suitable for test takers entering undergraduate and postgraduate studies or seeking professional registration. There are two tasks:
Task 1 – You will be presented with a graph, table, chart or diagram and asked to describe, summarize or explain the information in your own words. You may be asked to describe and explain data, describe the stages of a process, how something works or describe an object or event.
Task 2 – You will be asked to write an essay in response to a point of view, argument or problem. Responses to both tasks must be in a formal style.
Topics are of general interest. There are two tasks:
Task 1 – You will be presented with a situation and asked to write a letter requesting information, or explaining the situation. The letter may be personal, semi-formal or formal in style.
Task 2 – You will be asked to write an essay in response to a point of view, argument or problem. The essay can be fairly personal in style.
Test Format: Speaking (11–14 minutes)
PEAKING TEST
The speaking component assesses your use of spoken English. Every test is recorded.
Part 1 – The examiner will ask you general questions about yourself and a range of familiar topics, such as home, family, work, studies, and interests. This part lasts between four and five minutes.
Part 2 – You will be given a card which asks you to talk about a particular topic. You will have one minute to prepare before speaking for up to two minutes. The examiner will then ask one or two questions on the same topic.
Part 3 – You will be asked further questions about the topic in Part 2. These will give you the opportunity to discuss more abstract ideas and issues. This part of the test lasts between four and five minutes.
GEPSI CONSULTANCY
101, Aditya Arcade,
Choice Restaurant Lane,
Off C. G. Road,
Nr. Swastik Cross Roads.
Navrangpura,
Ahmedabad - 380 009.
Phone: +91-79 2642 6622
Mail: info@gepsi.com
2 Robert Speck Pkwy,
Mississauga, ON L4Z 1H8
Mobile: (647) 825 9775
Subscribe our Newsletter to get updates special deals, Program information and lot more.
© Copyright 2006. GEPSI All Rights Reserved.
Student Direct Stream Launched for India.
To learn about the changes in application process, Application process for Canadian Student Visa, of New SDS Student Visa Requirements for Indian students, contact:
GEPSI Immigration Services, Ahmedabad
The Canadian government licenced Immigration Consultant with offices in Ahmedabad, India and Toronto (Mississauga), Canada


Revised notice for procurement of Accessories and Accessories Reagent Kits for Random Access Chemistry Analyser being Proprietary Article under Rule 166 of 2017 for the department of Biochemistry.
List of provisionally selected candidates for admission to MD/MS Course-2019.
List of provisionally selected(SC Category) candidates for admission to MD/MS Course-2019.
Internship Training in the Department of Dietetics.
List of students admitted merit-wise category-wise(UG & PG).
Proforma for Complicated Chronic Disease Certificate.
Proforma for Application for issue of Birth Certificate(s).
Proforma for Application for issue of Death Certificate(s).
Proforma for Registration of the name of Child.


Best of Punta Cana | Are you Punta Cana proof?
Hey! Yes, you! You're almost coming to visit Punta Cana and wanted to check out this blog to prepare yourself? Well, throw that attitude out of the window, because we Dominicans like to do things Caribbean style, which is on our own time. But fine, now that you're still on the other side of the ocean, be in the know. These are the 10 things you will definitely need to pack for the Dominican Republic. Are you Punta Cana proof?
Hi. You're in the Dominican Republic now. We have our own time schedule here and we don't care about anyone else's! Or, is there a time? Does time exist? If we're all just doing things during the day, playing dominoes, wandering around, sitting on the beach, and working hard, doesn't that just mean there's a 'day' and a 'night'? Accept it and be patient! You're in a good place to not be worried about buses or food arriving in time.
These cute local animals LOVE interacting with new people! There's not a day going by they don't introduce themselves to clueless tourists. So bring it all: layers of clothes at night, mosquito spray, a net – you'll be needing it to be absolutely Punta Cana proof.
Nothing as handy as being able to use a phone, locally. You'll have internet and will be able to call local friends, hotels and Airbnbs. Some small supermarkets deliver groceries at your apartment, so it'd be useful to be able to contact them. In the Dominican Republic, you buy a local sim at a company like Claro and charge it everywhere! Check out the different options and see what's right for you. There's a big Claro office at San Juan Shopping Centre.
We know you can pay with dollars at most places, but pesos are easier as local shops and services often hand you cash back in pesos. If you want to truly local, take the bus or buy an empanada on the street, you will need pesos. As everyone uses a different exchange rate, this is a pretty safe decision too.
Yup, Punta Cana is a tourist destination. However, not everyone speaks English! Locals appreciate it if you take the time to learn their language. Or at least a bit. A few sentences can help you find the things you need and communicate a bit easier. Donde estas …? Where is …? Cuanto cuesta …? How much does … cost? And a simple 'hola, como estas?' does wonders, too.
Many Western tourists find this difficult because they think haggling is an insult, but in the Dominican Republic, you're good to go! Ok, maybe not in a chain like Zara, but whether you're buying fresh fish at the local market or some mamajuana – there's always some pesos to subtract! If you think of haggling as a game, it's more fun when you actually win. Try it!
We understand that you might enjoy looking like a lobster. That feeling of burnt skin, all crispy and red and soar against those wooden chairs, yum. Did this sentence raise the hair on your arms? Good! People who don't apply sunscreen are dumbos! There, we said it. There's no excuse, really. So be cool. Be hip. Buy a trendy pack of the cream and rub, rub, rub. This you will definetely need to be Punta Cana proof!
Of course, you always want to be respectful towards the culture of the country you're visiting. And sometimes, this isn't always easy. The Dominican Republic comes with superstitions and taboos too, all there to baffle you. You ready? Ok. Don't shower after you eat. Because you might.. drown? We don't know. It's just uncool.
The next one: don't open the fridge if you're really hot and sweaty. We know you want to! But don't. Your face might freeze in midst of all those hot and cold elements fighting each other, and forever stay that way. No need for botox, this way! Whatever you want.
Then thirdly: when landing in the Dominican Republic, you need to clap. It's polite, it's a ritual, it's a moment you share with the locals. Praying might happen too. Soak it all in!
We know you have hips and they're hard to leave behind, but when was the last time you really used 'em? As the birthplace of both merengue and bachata, and huge fans of reggaetón , you will dance and dance some more in the Dominican Republic. In Punta Cana, we have many cool clubs that will have your hips in a twist, craving more movement. Don't be afraid, don't be stiff! We're all here to enjoy ourselves.
Yup. Did you read our lobster comment? We're an island in the Caribbean, we're not a runway for swimwear fashion. While you enjoy prancing around in the tiniest bikini, we might just be on our way to work. So, let's all share Punta Cana in a respectful way – swimwear is for actual swimming, casual clothes for daytime wandering. LOVE!
Now you're ready! You are Punta Cana proof. We'd love to hear about your Dominican experiences. Tag us, please? Insta & twitter @bestofpuntacanaofficial!