text:
"use strict";

/**
Lightweight model client for Basho Riak 2.0

Prefers the protocol buffers API, but may fall back to the HTTP API for missing
functionality.

Search is supported via solr-client.

@class joukou-api/riak/Model
@extends events.EventEmitter
@requires lodash
@requires q
@requires node-uuid
@requires riakpbc
@requires solr-client
@author Isaac Johnston <isaac.johnston@joukou.com>
@copyright (c) 2009-2014 Joukou Ltd. All rights reserved.
 */
var EventEmitter, NotFoundError, Q, RiakError, ValidationError, elastic, env, pbc, uuid, _,
  __hasProp = {}.hasOwnProperty,
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };

EventEmitter = require('events').EventEmitter;

_ = require('lodash');

Q = require('q');

uuid = require('node-uuid');

NotFoundError = require('./errors/RiakNotFoundError');

ValidationError = require('./errors/ValidationError');

RiakError = require('./errors/RiakError');

pbc = require('./pbc');

env = require('./env');

elastic = require('./elastic');

module.exports = {
  define: function(_arg) {
    var bucket, schema, type;
    type = _arg.type, bucket = _arg.bucket, schema = _arg.schema;
    if (type == null) {
      type = 'default';
    }
    if (!_.isString(bucket)) {
      throw new TypeError('type is not a string');
    }
    if (!(_.isObject(schema) && _.isFunction(schema.validate))) {
      throw new TypeError('schema is not a schema object');
    }
    return (function(_super) {
      var afterRetrieve, self;

      __extends(_Class, _super);

      self = _Class;

      _Class.getType = function() {
        return type;
      };

      _Class.getBucket = function() {
        return bucket;
      };

      _Class.getSchema = function() {
        return schema;
      };

      /**
      Expand a shortened content type to the full equivalent.
      @private
      @static
      @param {string} type
      @return {string}
       */

      _Class._expandContentType = function(type) {
        switch (type) {
          case 'json':
            return 'application/json';
          case 'xml':
          case 'html':
          case 'plain':
            return 'text/' + type;
          case 'jpeg':
          case 'gif':
          case 'png':
            return 'image/' + type;
          case 'binary':
            return 'application/octet-stream';
          default:
            return type;
        }
      };

      /**
      Create a new instance of `this` *Model* based on the provided raw client
      data.
        @param {Object.<string,*>} rawValue The raw data from the client.
      @return {q.promise}
       */

      _Class.create = function(rawValue) {
        var afterCreate, data, deferred, errors, instance, key, valid, _ref;
        if (rawValue == null) {
          rawValue = {};
        }
        deferred = Q.defer();
        _ref = self.getSchema().validate(rawValue), data = _ref.data, errors = _ref.errors, valid = _ref.valid;
        if (!valid) {
          process.nextTick(function() {
            return deferred.reject(new ValidationError(errors, rawValue));
          });
          return deferred.promise;
        }
        key = uuid.v4();
        instance = new self({
          key: key,
          value: data
        });
        if (self.afterCreate) {
          afterCreate = self.afterCreate(instance);
        } else {
          afterCreate = Q.fcall(function() {
            return instance;
          });
        }
        afterCreate.then(function(instance) {
          return deferred.resolve(instance);
        }).fail(function(err) {
          return deferred.reject(err);
        });
        return deferred.promise;
      };

      _Class.createFromReply = function(_arg1) {
        var content, key, reply, ret;
        key = _arg1.key, reply = _arg1.reply;
        if (reply.content.length !== 1) {
          throw new Error('Unhandled reply.content length');
        }
        content = reply.content[0];
        ret = new self({
          type: self.getType(),
          bucket: self.getBucket(),
          key: key,
          contentType: content.content_type,
          lastMod: content.last_mod,
          lastModUsecs: content.last_mod_usecs,
          value: content.value,
          vclock: reply.vclock,
          vtag: content.vtag
        });
        if (ret.afterRetrieve instanceof Function) {
          ret.afterRetrieve();
        }
        return ret;
      };

      /**
      Retrieve an instance of this *Model* class from Basho Riak.
      @param {string} key
      @return {q.promise}
       */

      _Class.retrieve = function(key) {
        var deferred;
        deferred = Q.defer();
        pbc.get({
          type: self.getType(),
          bucket: self.getBucket(),
          key: key
        }, function(err, reply) {
          if (err) {
            return deferred.reject(new RiakError(err));
          } else if (_.isEmpty(reply)) {
            return deferred.reject(new NotFoundError({
              type: self.getType(),
              bucket: self.getBucket(),
              key: key
            }));
          } else {
            return deferred.resolve(self.createFromReply({
              key: key,
              reply: reply
            }));
          }
        });
        return deferred.promise;
      };

      _Class.likeQuery = function(key, value, op) {
        var split, val, values, _i, _len;
        if (op == null) {
          op = "";
        }
        if (!value || !value.trim()) {
          return;
        }
        values = [];
        split = value.trim().split(" ");
        for (_i = 0, _len = split.length; _i < _len; _i++) {
          val = split[_i];
          values.push("" + key + ":*" + val + "*");
        }
        if (values.length === 0) {
          return "";
        }
        return " (" + (values.join(" " + op + " ")) + ") ";
      };

      _Class.escapeElasticSearchCharacters = function(value) {
        if (typeof value !== 'string') {
          return value;
        }
        return value.replace(/\&{2}|\|{2}|[\+\-≈!\(\)\{\}\[\]\^"~\*\?:\\/ ]/g, '\\$&');
      };

      _Class.elasticSearch = function(q, first) {
        var deferred, params, requestedParams;
        deferred = Q.defer();
        params = {
          index: self.getBucket()
        };
        requestedParams = typeof q === 'string' ? {
          q: q
        } : q;
        params = _.assign(params, requestedParams);
        elastic.search(params, function(err, reply) {
          var hit, hits, key, result, ret, riakReply, value, _i, _len;
          if (err) {
            return deferred.reject(err);
          }
          hits = reply.hits;
          hits = hits.hits;
          result = [];
          for (_i = 0, _len = hits.length; _i < _len; _i++) {
            hit = hits[_i];
            key = hit._id;
            value = hit._source;
            riakReply = {
              content: [
                {
                  value: value
                }
              ]
            };
            ret = self.createFromReply({
              key: key,
              reply: riakReply
            });
            if (first) {
              return deferred.resolve(ret);
            }
            result.push(ret);
          }
          if (!result.length) {
            return deferred.reject(new NotFoundError({
              index: params.index,
              bucket: self.getBucket(),
              key: q
            }));
          } else {
            return deferred.resolve(result);
          }
        });
        return deferred.promise;
      };

      _Class.search = function(q, opts) {
        var deferred;
        deferred = Q.defer();
        if (typeof opts === 'boolean') {
          opts = {
            firstOnly: opts
          };
        }
        opts = opts || {};
        pbc.search({
          q: q,
          index: self.getBucket(),
          rows: opts.rows,
          start: opts.start,
          sort: opts.sort,
          filter: opts.filter,
          df: opts.df,
          op: opts.op,
          fl: opts.fl,
          presort: opts.presort
        }, function(err, reply) {
          var first, getPromise, promises;
          if (err) {
            deferred.reject(new RiakError(err));
            return;
          }
          if (_.isEmpty(reply) || reply.num_found === 0 || _.isEmpty(reply.docs)) {
            deferred.reject(new NotFoundError({
              index: q,
              bucket: q,
              key: q
            }));
            return;
          }
          getPromise = function(doc) {
            var fields, keys, pair;
            fields = doc.fields;
            keys = _.where(fields, {
              key: '_yz_rk'
            });
            if (!keys || !keys.length) {
              if (opts.firstOnly) {
                return Q.reject(new NotFoundError());
              }
              return;
            }
            pair = keys[0];
            if (!pair || !pair.value) {
              if (opts.firstOnly) {
                return Q.reject(new NotFoundError());
              }
              return;
            }
            return self.retrieve(pair.value);
          };
          if (opts.firstOnly) {
            first = _.first(reply.docs);
            if (!first) {
              return Q.reject(new NotFoundError({
                index: q,
                bucket: q,
                key: q
              }));
            }
            return getPromise(first).then(deferred.resolve).fail(deferred.reject);
          } else {
            promises = _.map(reply.docs, getPromise);
            return Q.all(promises).then(function(values) {
              return deferred.resolve(values);
            }).fail(deferred.reject);
          }
        });
        return deferred.promise;
      };

      /**
      Retrieve a collection of instances of this *Model* class from Basho Riak
      via a secondary index query.r t
      @param {string} index
      @param {string} key
       */

      _Class.retrieveBySecondaryIndex = function(index, key, firstOnly) {
        var deferred;
        if (firstOnly == null) {
          firstOnly = false;
        }
        deferred = Q.defer();
        pbc.getIndex({
          type: self.getType(),
          bucket: self.getBucket(),
          index: index,
          qtype: 0,
          key: key
        }, function(err, reply) {
          if (err) {
            return deferred.reject(new RiakError(err));
          } else if (_.isEmpty(reply)) {
            return deferred.reject(new NotFoundError({
              type: self.getType(),
              bucket: self.getBucket(),
              key: key
            }));
          } else {
            if (firstOnly) {
              return deferred.resolve(self.retrieve(_.first(reply.keys)));
            } else {
              return deferred.resolve(_.map(reply.keys, function(key) {
                return self.retrieve(key);
              }));
            }
          }
        });
        return deferred.promise;
      };

      _Class["delete"] = function(key) {
        var deferred, elasticDelete, riakDelete;
        deferred = Q.defer();
        elasticDelete = function() {
          return elastic["delete"]({
            index: self.getBucket(),
            type: self.getType(),
            id: key
          }, function(err) {
            if (err) {
              return deferred.reject(new RiakError(err));
            }
            return riakDelete();
          });
        };
        riakDelete = function() {
          return pbc.del({
            type: self.getType(),
            bucket: self.getBucket(),
            key: key
          }, function(err, reply, status) {
            if (err && status !== 404) {
              return deferred.reject(new RiakError(err));
            } else {
              return deferred.resolve();
            }
          });
        };
        if (env.elastic_search) {
          elasticDelete();
        } else {
          riakDelete();
        }
        return deferred.promise;
      };

      /**
      @constructor
       */

      function _Class(options) {
        this.contentType = options.contentType, this.key = options.key, this.lastMod = options.lastMod, this.lastModUsecs = options.lastModUsecs, this.value = options.value, this.vclock = options.vclock, this.vtag = options.vtag, this.indexes = options.indexes;
        if (this.indexes == null) {
          this.indexes = [];
        }
        this.contentType = this._detectContentType();
        return;
      }

      _Class.prototype.getKey = function() {
        return this.key;
      };

      _Class.prototype.getValue = function() {
        return this.value;
      };

      _Class.prototype.setValue = function(value) {
        this.value = value;
      };

      _Class.prototype.beforeSave = function() {};

      afterRetrieve = function() {

        /**
        Persists `this` *Model* instance in Basho Riak.
        @return {q.promise}
         */
      };

      _Class.prototype.save = function() {
        var deferred, elasticSearchPut, model, params;
        if (this.beforeSave instanceof Function) {
          this.beforeSave();
        }
        deferred = Q.defer();
        model = this;
        params = this._getPbParams();
        elasticSearchPut = (function(_this) {
          return function(payload) {
            if (!env.elastic_search) {
              return deferred.resolve(reply);
            }
            return elastic.index({
              index: self.getBucket(),
              type: self.getType(),
              id: _this.getKey(),
              body: _this.getValue(),
              refresh: true
            }, function(err) {
              if (err) {
                return deferred.reject(new RiakError(err, model, params));
              } else {
                return deferred.resolve(payload);
              }
            });
          };
        })(this);
        pbc.put(params, (function(_this) {
          return function(err, reply) {
            if (err) {
              return deferred.reject(new RiakError(err, model, params));
            } else {
              return elasticSearchPut(self.createFromReply({
                key: _this.key,
                reply: reply
              }));
            }
          };
        })(this));
        return deferred.promise;
      };

      _Class.prototype["delete"] = function() {
        return self["delete"](this.getKey());
      };

      /**
      Get the params object suitable for sending to the server via the protocol
      buffers API.
      @return {!Object}
       */

      _Class.prototype._getPbParams = function() {
        var content, params;
        params = {};
        params.type = self.getType();
        params.bucket = self.getBucket();
        params.key = this.key;
        if (this.vclock) {
          params.vclock = this.vclock;
        }
        params.return_body = true;
        content = {};
        content.value = this._getSerializedValue();
        content.content_type = this.getContentType();
        if (this.vtag) {
          content.vtag = this.vtag;
        }
        if (this._hasSecondaryIndexes()) {
          content.indexes = this._getSecondaryIndexes();
        }
        params.content = content;
        return params;
      };

      /**
      Get a serialized representation of the value of `this` *Model* instance.
      @return {string}
       */

      _Class.prototype._getSerializedValue = function() {
        switch (this.getContentType()) {
          case 'application/json':
            return JSON.stringify(this.value);
          default:
            return new Buffer(this.value).toString();
        }
      };

      _Class.prototype.getContentType = function() {
        return this.contentType;
      };

      /**
      Automatically detect the content type based on reflection of the value.
      @private
      @return {string}
       */

      _Class.prototype._detectContentType = function() {
        if (this.contentType) {
          return self._expandContentType(this.contentType);
        } else {
          if (this.value instanceof Buffer) {
            return self._expandContentType('binary');
          } else if (typeof this.value === 'object') {
            return self._expandContentType('json');
          } else {
            return self._expandContentType('plain');
          }
        }
      };

      _Class.prototype.addSecondaryIndex = function(key, value) {
        if (value == null) {
          value = null;
        }
        if (value != null) {
          this.addSecondaryIndexWithValue(key, value);
        } else {
          this.indexes.push(key);
        }
        return this;
      };

      _Class.prototype.addSecondaryIndexWithValue = function(key, value) {
        (this.indexValues != null ? this.indexValues : this.indexValues = {})[key] = value;
        return this;
      };

      _Class.prototype._hasSecondaryIndexes = function() {
        return this.indexes.length > 0;
      };

      _Class.prototype._getSecondaryIndexes = function() {
        var indexes, key, keyResult, value, _i, _len, _ref, _ref1;
        indexes = [];
        _ref = this.indexValues != null;
        for (key in _ref) {
          value = _ref[key];
          if (!this.indexValues.hasOwnProperty(key)) {
            continue;
          }
          indexs.push({
            key: key,
            value: value
          });
        }
        _ref1 = this.indexes;
        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
          key = _ref1[_i];
          if (!this.value.hasOwnProperty(key)) {
            continue;
          }
          keyResult = {
            key: this._getSecondaryIndexKey(key),
            value: this.value[key]
          };
          if (_.some(indexes, {
            key: keyResult.key
          })) {
            continue;
          }
          indexes.push(keyResult);
        }
        return indexes;
      };

      /**
      Get the secondary index field name based on reflection of the value
      associated with the given `key`.
       */

      _Class.prototype._getSecondaryIndexKey = function(key) {
        if (key.indexOf("_bin") !== -1 || key.indexOf("_int") !== -1) {
          return key;
        }
        if (_.isNumber(this.value[key])) {
          return "" + key + "_int";
        } else if (_.isString(this.value[key])) {
          return "" + key + "_bin";
        } else {
          throw new Error('Invalid secondary index type');
        }
      };

      return _Class;

    })(EventEmitter);
  }
};

/*
//# sourceMappingURL=Model.js.map
*/


Truly, truly, one of the most remarkable and precious of all the passages to be found in the Holy Scriptures: it begins sorrowfully; a prayer that to this day God largely has not answered. "My heart's desire and my prayer to God for my people Israel is, that they might be saved" [Romans 10:1]. And that was our subject and our text last Sunday night; "That they might be saved." Now we begin at the second verse, "For I bear them record," says the apostle, "that they have a zeal of God, but not according to knowledge" [Romans 10:2]. Let us speak now for a moment of that "zeal for God, not according to knowledge." Had Paul written that of this whole believing world, he would have characterized it precisely, and exactly, and truthfully, "a zeal for God, not according to knowledge." I have never yet been in any land, among any people, that I haven't seen that sorrowfully, tragically, painfully, agonizingly true.
These last few weeks going through Central America, I visited an ancient Mayan temple with the step, step, steps ascending up to a height and that house of worship on top, and down here at the bottom, removed about a hundred yards from the first step, the stone altar. And for untold years—because there's no history written of their civilization—for untold years, every spring the people came together. And in a festival, they chose the finest brave and the finest maid in their midst. And on that stone altar, a priest of those heathen Mayan gods, who are so terrible in their visage, a priest would take a knife, and on that altar lying living flesh, plunge it into the breast of the youth and of the maid. And while the heart still pumped and the blood still coursed, cut out that living heart. Then with it ascend the steps of the temple and offer it there to propitiate the anger of those fierce and terrible gods; a zeal not according to knowledge.
Some of you have traveled in the East, in the Orient. It is endless there and so sorrowful and painful to look upon. There have literally been books and libraries written about the zealous Hindu seeking God, bathing in the sacred rivers, lying on boards filled with nails, starving themselves into emaciation, praying on their knees as they walk for miles and miles to some sacred temple, lacerating themselves, going through every kind of torture that mind could imagine, if by some means they might come to know God. A like thing you see in the whole Buddhist world: those priests in their monasteries, with their yellow robes and their heads shaved, begging with their rice bowls, seeking to serve God; or with their rosaries, counting those beads day after day after day; or writing a prayer and placing it in a prayer wheel and turning it around and around with the supposition that every time it turns over it strikes the listening ear of a dumb and pagan god; or inside of the temple taking uncounted treasure and there carved is a jade Buddha. Or here is a reclining Buddha and the workmen are covering it with gold leaf. Or here is a gigantic Buddha in a statue so vast and big you wonder how they contrive to carve it and sculptor it.
And a bell, they said the biggest bells in the earth—they said, "Ring it," and I rang it. It's supposed to awake the listening ear of the god. And as you stand in front of one of the temples, there'll come somebody and just ring that bell, and ding and dong and clang trying to awaken the god, then go inside and bow and present a petition. Or there'll be a woman so sorrowful, so heavy of heart; one particular woman, "Why does she pray in such agony?" And the answer is, "She's sterile and she knows that her husband will put her away if she's not able to bear, and she is placating the gods, and beseeching the gods, and going to all kinds of sorrowful miserable things hoping to find an open ear before God"; a zeal of God, not according to knowledge [Romans 10:2].
And the labors of men; by their good works hoping to find entrance into heaven—it is everywhere, and Paul describes it in this passage. For some, he says, some suppose that the word is high in heaven, and we must climb and climb and climb, and strive and strive; to rise and to rise and maybe someday possess it. And others would say, "No, the word of salvation, the word of God is not up there, and there, and there, but it is deep, and deeper, and deepest. We must study. We must ferret it out. We must learn. We must understand" [Romans 10:6-7]. All of these things, Paul says, are not true. The righteousness which is of God is not difficult for a man to grasp, or to know, or to understand, or to obey, or to follow. It's not up there as though Christ had not come down. It is not up there, that a man must strive for, and reach for, and climb for, if by means one rung on the other, on the other, then finally he could attain to it. "Not so!" said Paul, as though Christ, the Word of God, had not come down from heaven. Nor, he says, is it deep, and deep, and deep as though Christ had not come up from the dead [Romans 10:6-7], as though the Word were buried and a man must study. It is hidden in these rocks, and we must study geology to find it. Or it's hidden in the secrets of this earth, and we must ferret it out and study, if by any means we might attain to it.
"No!" says the apostle, "For the word is nigh thee" [Romans 10:8]. It is as close as the breath in thy mouth; "It is in thy heart," if you have ever heard a gospel preacher preach, or if you have ever listened to John 3:16 quoted. "What saith it? The word is nigh thee, in thy mouth, and in thy heart: the word of faith, which we preach" [Romans 10:8]; nearer than our hands and our feet, closer than the very body in which we live, this Word; "That if thou shalt confess with thy mouth Jesus as Lord," and shalt be persuaded in thine heart that He lives, that God raised Him from the dead"; that we have a Savior in heaven to whom we can pray, who can hear the petitions of His children. If we believe these things in our hearts, that Christ lives, and if we openly, unashamedly give our lives to Him, we shall be saved; "For with the heart one believeth unto that God kind of righteousness; and with the mouth confession is made unto salvation" [Romans 10:9-10].
And if a man climbs up some other way, Jesus says, "He is a thief and a robber [John 10:1]; for there is one door into heaven" [John 10:2]; as there was one door into the ark [Genesis 6:16]; as there was one door into the shepherd's sheepfold [John 10:1-2]. And the sheep go through one by one, and he counts them by name as they pass under the rod [John 10:3]; so all of us enter into heaven one way, just one door [Ezekiel 20:37; John 10:3, 7-9]. "If thou shalt confess with thy mouth Jesus, and shalt believe in thine heart that He liveth, thou shalt be saved" [Romans 10:9].
No man shall enter heaven on his college diploma. No man shall enter heaven by virtue of his Masonic ring. No man shall enter heaven because of his stars, or his bars, or his medals. No man shall enter heaven because of his achievements in science or in politics. No man shall enter heaven because of his ordination paper. No man shall enter heaven because of his stocks or his bonds. No man shall enter heaven because of any effort he has made in this life or any achievement he has won in this world.
We all enter heaven alike. We come just as we are, sinful as we are, weak as we are, depraved as we are, lost as we are, human as we are, weak as we are. We all come alike. "If thou shalt confess with thy mouth Jesus as Lord, and believe in thine heart that He liveth, that God raised Him from the dead, thou shalt be saved" [Romans 10:9]. And if a man is wise, and learned, and astute, and scholarly, if he's saved, he goes through that one door [John 10:1-3, 7-9]. A man can be unlearned, untaught; as he's saved he walks by faith through that one door. He may be a child. He may be old and tottering toward the grave. He may be rich. He may be very poor. However we enter into heaven, God's saints all march through alike; in the blood of Christ, in the grace of God [Ephesians 2:8], in the forgiveness of Jesus [Ephesians 1:7], confessing Him as our Lord, all alike [Romans 10:9-10]. "For," said the apostle, "there is no difference, there is no difference" [Romans 3:22].
In a man's eyes and in man's judgments, this one may be better than that one. And as a man shall judge and as we follow human standards, this one may be better than that one. But in God's sight we're all alike, just sinners, all of us [Romans 3:23], all of us lost [Romans 3:9-19], all of us. "For the Scripture saith, there is no difference, no difference." But the Scripture also saith, "Whosoever believeth on Him shall not be ashamed" [Romans 10:11]. However the weakness of our life, and the sin of our life, and the past of our life, and the lostness of our life, and the depravity of our life, and the failures of our life; in Christ, "Whosoever believeth on Him shall not be ashamed" [Romans 10:11]. We shall stand that day in His presence, and live [Hosea 6:2].
Did you ever think about yourself? Is there the purest soul in this congregation tonight? If I had a motion picture of all of the thoughts of your life and all of the secret things of your life and I put them on a screen here and let our people look upon them, would you blush? Would you? Would you be ashamed, would you? Would you bow your head in agonizing sorrow? Would you wish you were never born? The purest among us and the sweetest and finest, if I put on that screen all of your life; ashamed, all of us, all of us. There is in human nature, there is in the depravity of the human soul, all of us alike: there's no difference, what makes us ashamed in the presence of the Lord. But oh, in His name, and in the faith and preciousness of Jesus, all of that is washed away [Romans 9:33]. The stain is gone. The crimson is gone. The scarlet is gone. Our sins are gone [Isaiah 1:18]. "And whosoever believeth in Him shall not be ashamed" [Romans 10:11]; standing someday in the presence of God Himself, justified by faith [Romans 5:1], because God hath accepted us, and for Jesus' sake, in His grace and mercy, welcomed in [2 Peter 1:10-11].
Then that climactic, "For whosoever shall call upon the name of the Lord shall be saved" [Romans 10:13]. I may admire Jesus, and be lost. I may write books about Him, and be lost. I may sing about Him, and be lost. I may commend Him, and be lost. But there's one thing I cannot do, and be lost. I cannot call upon His name and be lost [Romans 10:13]. For when I do, something happens in heaven and something happens in earth. God has a listening ear, and the Lord hears His people when they cry. The Lord said to Moses, "Moses, come, I shall send thee down into the land of Egypt to deliver My people; for I have heard their cry, and their tears and their supplications have come up to Me" [Exodus 3:7, 9-10]. It has a repercussion in heaven!
The Lord said to His angel Gabriel, "Come here. Come here. Look at Hezekiah clothed in sackcloth, in tears, on his face, calling upon Me [Isaiah 37:1, 15-17]. Gabriel, come." That night the angel passed over the vast armies of Sennacherib, and they became corpses at the dawn of the next morning's sun [Isaiah 37:36]. The Lord hears His people when they cry. There's no exception to that. The publican beat on his breast, saying, "Lord, be merciful to me the sinner" [Luke 18:13]. And the Lord said, "Look at him, look at him! He is walking to his house having finished his cry and his prayer and his confession. Look at him. He is walking home justified!" [Luke 18:14]. God declared him righteous. Not that he is righteous, for he was still a sinner. But God declared him righteous and treated him as though he had never erred and never sinned. God hears His people when they cry.
Peter is in prison; they are about to slay him, and at the next morning's sunrise his head is to be cut off. But the church is in prayer, and that night God sends His angel and opens the iron gates and delivers Peter to His people, whole and alive, safe [Acts 12:3-17]. God hears His children when they cry. And Paul is out in the deep, and the wind is blowing fiercely, and the waves are rising high, and all have despaired of life except Paul who was talking to Jesus. And the Lord Jesus sent an angel to stand by him, saying, "Fear not, Paul, I have given thee thy life, and all of these who are with thee [Acts 27:23-24]…For whosoever shall call upon the name of the Lord shall be saved" [Romans 10:13]. You can't call upon God and God not hear.
And the Lord bows down His ear to hear.
We could just spend the night speaking of God's answer in our own souls, in our own lives. For whosoever shall call upon the name of the Lord shall be heard. Whosoever shall call upon the name of the Lord shall be answered. Whosoever that call upon the name of the Lord shall be helped. Whosoever that shall call upon the name of the Lord shall be encouraged. Whosoever call upon the name of the Lord shall be delivered. "Whosoever that shall call upon the name of the Lord shall be saved" [Romans 10:13].
O Lord, come by me. O Lord, remember me. O Lord, save me. And God moves all heaven to answer prayer when His people cry unto Him. Why, it's the most blessedness, it's the most preciousness, it's the most hallowedness, it's the most heavenliness of all of the things imaginable to a man's soul, having God in this life to help us, and to strengthen us, and to walk with us, and someday to accompany us when His saints go marching in.
If thou shalt confess with thy mouth Jesus as Lord, and shalt believe in thine heart that God hath raised Him from the dead, thou shalt be saved.
For the Scripture saith, Whosoever shall call upon the name of the Lord shall be saved.
And that's our blessed invitation to you tonight. Somebody you, "Preacher, in my heart I look to Jesus, and openly, publicly I come down this aisle before angels in heaven and men in earth, and own Jesus as my Lord. And here I am. Here I come. I can't save myself. I'm not able. I'm not sufficient for the vicissitudes and fortunes of life that lie ahead. And in that hour and day of death and the grave and the darkness of an unknown beyond, O God, remember me. Save me." And the Lord hears His people when they cry. Would you make it tonight? Would you make it now? "Here I come, preacher, here I am." Or to put your life with us in the circle of our church, would you come? I want you to look at that boy coming down that aisle. He is up there in the balcony. That boy's coming down this aisle to give his heart to Jesus. "Don't wait, preacher, until we sing the song or you even finish your appeal, I'm on the way. I'm on the way." God bless him and make him a great stalwart Christian for Jesus. And by his side, somebody you, "Preacher, tonight I give my heart in faith to Christ, and here I come, and here I am," while we stand and while we sing.


Streets and Highways Code - SHC Section 8740.5.
Streets and Highways Code - SHC Section 8740.
Streets and Highways Code - SHC Section 8740.1.
Streets and Highways Code - SHC Section 8740.2.
Streets and Highways Code - SHC Section 8740.3.
Streets and Highways Code - SHC Section 8740.4.


A wonderful photo session in the heart of Florence's Oltrarno, taking photos for fine artist & tour guide Helen Bayley.
Paintings that are rich compositions of prickly spines and leaves, feathers, twigs, ripe open fruit – an allusion to the cycle of life – and studio walls adorned with ancient frescoes dating back to medieval times, they all convey this marvelous, inspiring atmosphere, a perfect setting for Helen's private fine art workshops.
Are you an artist, creative, and would you like your own portraits taken while being in your creative flow? Do you know you need fresh photos for your website and social media? Contact me here.
If you are looking to get new photos for your website and social media, get in touch with me! I'm looking forward to hearing from you.


text:
More Media Deception: ABC Called Out By Slate.com For Editing Zimmerman Juror's Interview
Home » More Media Deception: ABC Called Out By Slate.com For Editing Zimmerman Juror's Interview
We covered the story of Juror B29, who only went by the name of Maddy, yesterday. In what appeared to be a seamless interview on ABC News, we are now discovering was a cleverly edited video pitched to the nation. However, it is the source that has called ABC out that is most telling, Slate.com.
Yesterday, we presented ABC's version of the interview. Here's what we showed you.
Slate's William Saletan points out what the interview really looked like and there's video evidence to prove it. He writes:
ABC News hasn't posted a full unedited video or transcript of the interview. The video that has been broadcast—on World News Tonight, Nightline, and Good Morning America—has been cut and spliced in different ways, often so artfully that the transitions appear continuous. So beware what you're seeing. But the video that's available already shows, on closer inspection, that Maddy has been manipulated and misrepresented. Here are the key points.
The phrase "got away with murder" was put in her mouth. Nightline shows ABC interviewer Robin Roberts asking Maddy: "Some people have said, 'George Zimmerman got away with murder. How do you respond to those people who say that?' " Maddy appears to reply promptly and confidently: "George Zimmerman got away with murder. But you can't get away from God." But that's not quite how the exchange happened. In the unedited video, Roberts' question is longer, with words that have been trimmed from the Nightline version, and Maddy pauses twice, for several seconds, as she struggles to answer it. "… George Zimmerman … That's—George Zimmerman got away with murder. But you can't get away from God."
You have to watch her, not just read her words, to pick up her meaning. As she struggles to answer, she looks as though she's trying to reconcile the sentiment that's been quoted to her—that Zimmerman "got away with murder"—with her own perspective. So she repeats the quote and adds words of her own, to convey what she thinks: that there's a justice higher than the law, which Zimmerman will have to face. She thinks he's morally culpable, not legally guilty.
Here is the clip of the section in question and notice around the 2:05 mark where the unedited version shows something a little bit less than what appeared in the edited version.
The full footage has yet to be released. However, I think Saletan is exactly right and that media outlets conducting these interviews should not only begin posting their edited versions, but also make available the raw footage of the interviews so people can compare to see if they are dealing honestly with those they interview.
In the same manner that the media manipulated the George Zimmerman 911 call to make him appear to be racist, it seems clear ABC did the same thing to this interview in order to stoke the fires of racial division.
While I still disagree with Maddy over her perspective, I am glad that she was able to set aside emotion and look at the evidence and the law to come to her decision. I would hope that all jurors would do as she did.
abc news George Zimmerman juror b29 maddy Trayvon Martin william saletan
With Illegitimate Power Comes Illegitimate Laws
Obama Decries Student Debt, Ignores America's Debt

redpajama_set_name: RedPajamaCommonCrawl


Nancy Kuhlman, center, back to camera, organized volunteers for this June Book Bee at Christ Lutheran, Costa Mesa, CA.
Nancy Kuhlman, a volunteer leading other volunteers, is speaking of a Book Bee she organized at her home congregation, Christ Lutheran in Costa Mesa, California, and the truths she's learned about church volunteerism through her experiences.
After she retired three years ago, Nancy's love of missions led her to accept a request to provide administrative assistance to Rev. John Davies and his wife Maila, members of Christ Lutheran who work through Lutheran Bible translators doing Bible translation mission work in Papua New Guinea, where they've served since 1972.
site maintained by Nancy Kuhlman; Lutheran Bible Translators site; Christ Lutheran, Costa Mesa, site.


Cannabis Oil For Birds TrustedDrugstore. Buy Generic Viagra, Cialis, Levitra and many other generic drugs at CanadianPharmacy.
Cannabis Oil For Birds Lowest prices for Generic and Brand drugs.
!!! Defect Comment about Cannabis Oil For Birds By Guru & another Buyer !!!


A blockbuster earnings report from Apple boosted sentiment across Wall Street, sending the markets whizzing deep into positive territory.
The Dow Jones Industrial Average gained 89.2 points, or 0.69%, to 13091, the S&P 500 rose 18.7 points, or 1.4%, to 1391 and the Nasdaq Composite soared 68 points, or 2.3%, to 3030.
Apple, the world's biggest publicly-traded company by market capitalization, earned $11.6 billion in its fiscal second quarter on sales of $39.2 billion, easily beating analysts' expectations. The iPad-maker's shares, which had seen selling pressure over the previous 11 trading days, soared some 8.9% on Wednesday. The gain on the day was the biggest on a percent basis since November 2008 and added $46.4 billion in market capitalization.
Overall, the technology sector performed the best on the day, followed by basic materials stocks. Indeed, the Nasdaq had its best day of the year.
The yield on the 10-year Treasury bond jumped 0.026-percentage point to 1.989% as traders shed the safe-haven asset. In a sign of the breadth of the rally, more than 75% of the S&P 500 closed in the green and there were more than three trades in advancing shares for every one in declining shares on the New York Stock Exchange.
Also on the earnings docket were results from two Dow heavyweights Boeing (NYSE:BA) and Caterpillar (NYSE:CAT).
Caterpillar posted first-quarter earnings of $2.37 a share on revenue of $15.98 billion. Analysts were looking for $2.13 a share on $16.22 billion. The world's biggest heavy machinery maker also said it expects to earn about $9.50 a share for the full year, weaker than consensus estimates of $9.54. Shares were down more than 2%, costing the Dow 38 points.
The day was a busy one on the economic front as well.
Energy futures were mixed after volatile trading following a mixed weekly inventory report from the Energy Department. Oil inventories rose by 3.98 million barrels last week, a bigger build than the 2.7 million that analysts expected. However, gasoline inventories tumbled 2.24 million barrels, a wider draw than the 900,000 expected.
Crude oil traded in New York gained 57 cents, or 0.55%, to $104.12 a barrel. Wholesale New York Harbor gasoline dipped 0.11% to $3.16 a gallon.
In metals, gold slid $1.50, or 0.09%, to $1,642 a troy ounce.


1. Where are MUDs located?
MUDs are run on many computers around the world. To play a MUD, all you need to do is telnet to the MUD's Internet Protocol (IP) port. HOTL3 is located in Singapore/US; our IP is hotl3.com and the port is 23. So just head to hotl3.com 23 to start playing.
2. Don't I have a right to MUD?
No, it must be stressed that MUDs are not a right, and your access is granted out of trust. People usually have to pay to use processing time on the large, expensive computers which MUDs often run on, and you're being given a special deal. If you're using a school account, you might want to check your school's computer policy. Some institutions have banned MUDding and games.
3. What should I do to connect to a MUD?
There are a couple of ways to connect to a MUD, the most basic being the 'telnet' function on your Windows or Unix system. HOTL3 is at the network address 'hotl3.com' at port 23, you could type (on most UNIX systems) telnet hotl3.com 23 or, on some VMS systems, telnet hotl3.com/port=23 and you'd be ready for action The other way is to use a Windows client such as ZMUD, which is a program that gives you a nice, user-friendly interface for MUDding.
4. What's a client program? Do I need one?
A client program is simply another program you use instead of telnet to connect to a MUD. Clients also provide useful things such as macros, triggers, and cut-and-paste editing. Face it, using plain telnet is boring. You can't really see what you're typing and you'd be missing out on colours too.
5. I'm connected! What do I do next?
Once you're connected, you'll be prompted for a name and password. Of course, if you've never played before, you won't have any. You'll need to create a new character - the game will guide you along the process. Once you're in, you'd do well to type 'help' to see what you can do and how you should go about doing it. In most MUDs you play by issuing commands, sometimes with arguments. MUD School will help you familiarise yourself with the common commands and soon you'll be able to venture further.
6. What kind of name should I use for my character?
Obviously, nothing vulgar or socially offensive. To keep with the medieval/fantasy theme, try to go for fantasy names. Probably something pronounceable too, so that people can identify with you.
7. What should I use as a password for my character?
Pick a password just as you would do for any computer account. Use a word, or better yet, a phrase or anagram, that isn't obvious. Don't, for instance, use the same name as your character, or your own first name, or your girl/boyfriend's name. And never use the same password as the one on your computer account.
8. What can or can't I do in terms of player interaction?
You shouldn't do anything that you wouldn't do in real life, even if the world is a fantasy world. The important thing to remember is that it's the fantasy world of possibly hundreds of people, and not just yours in particular. There's a human being on the other side of each and every wire! Always remember that you may meet these other people some day, and they may break your nose. People who treat others badly gradually build up bad reputations and eventually receive the NO FUN Stamp of Disapproval. The jury is still out on whether MUDding is "just a game" or "an extension of real life with gamelike qualities", but either way, treat it with care.
9. What's the difference between IMMs and IMPs?
IMPs (Implementors) are the people who write the game and own the database. IMPs can do whatever they want to whomever they want whenever they want. A more appropriate name for Implementors would probably be 'Janitor', since they tend to have to put up with responsibilities and difficulties (for free) that nobody else would be expected to handle. IMMs, or Immortals, are lower-ranking gods. They assist the IMPs in the day-to-day running of the MUD, such as answering player queries and enforcing MUD policies.
10. Can I approach IMMs and IMPs for help?
Feel free to approach them for questions regarding administration or gameplay, but don't expect them to reveal everything there is to know, such as how to calculate dates. Some element of mystery and anticipation should be maintained in a fantasy RPG. DO NOT ask IMMs or IMPs to retrieve your corpse, help you get equipment, help you kill a mob, give you karma or experience points, or basically cheat in any way.
A 'newbie' is someone who has only recently begun to participate in some kind of activity. When we're born, we're all life newbies until we get experience under our belts (or diapers, whatever). You're a newbie until you've got the hang of MUDding, basically.
First, read help files to learn more about commands and some game concepts. Also, players who have been logged on for a long time (which you can check using the 'who' command - they'll be near the bottom of the list) are often helpful, as they are usually the veterans who've seen and done it all before. Asking relatively high level characters is usually the way to find things out.
13. Why do some people delight in bullying others?
This question can be answered in a variety of ways. Suffice to say some people are basically caught up with their egos to ever think of anything else other than themselves. MUD is home to the good, bad and ugly. Just play by the rules, and if things get personal, its best to settle them outside the MUD, rather than involve innocent bystanders, unintentionally or not.
14. What is a flame?
Flames start when people take their differences into a public arena, for instance, the BBS or chat channel. Basically, flamers try to convince each other that the other party is either wrong or stupid or both. Avoid getting into flame wars, and if flamed, laugh it off or ask someone else what you did wrong, instead of provoking more flames and making other people suffer.
15. What is a BOT?
A bot is a computer program which logs into a MUD and pretends to be a player. Using bots is illegal on HOTL3.
16. What is a log?
MUD administrators keep online files that log connections and certain actions. Certain client programs allow logs to be kept of the screen. Logs are useful for recording interesting or useful information or conversations, as well.
The Internet is made up of thousands of interconnected networks. Between your computer and the computer which houses the MUD, there may be up to 30 gateways and links connecting them over serial lines, high-speed modems, leased lines, satellite uplinks, etc. If one of these gateways or lines crashes, is suddenly overloaded, or gets routing confused, you may notice a long time of lag time between your input and the MUD's reception of that input. Computers which are nearer to the computer running the MUD are less susceptible to lag. Another source of lag is if the computer which hosts the MUD is overloaded. When lag happens, it is best to just patiently wait for it to pass.
18. What's the easiest way to annoy a veteran MUD user?
Demand something. Whine. Follow them around. Beep or tell them over and over after they've asked you to stop. Steal a kill.
19. What's the easiest way to be a mean veteran player?
Don't give help to the new players. Kill them, ignore them, shout "get a life!" at them. These are the best ways to kill off MUDding in general, actually.


Is Acupuncture Really Very Helpful for Painful Joints?
Click HERE to Get Dr. Mark Wiley's New Book, "Arthritis Reversed", FREE TODAY!
We don't know why, but poor health information surrounds us everywhere. Downright lies, some of it! And the general public has no way of knowing if what they hear, read or see is authentic or merely bogus.
Is it the media sensationalizing information for a "compelling story." Is it government agencies in cahoots with some industry looking to squash the competition? What if it's the companies themselves misrepresenting their goods? Then again, it could be simple ignorance.
I'd like to share an item with you here that recently came to my attention. A patient of mine told me about a recent article on acupuncture she had read in a major newspaper.
She said that the article was positive toward acupuncture and mentioned that it is very effective for certain diseases. It also noted that acupuncture was being taken seriously by physicians of Western medicine—and many were now studying it. So far, so good!
But the article went on to say that given the trials conducted by these MDs, the only thing important to acupuncture was the insertion of the needles. Anywhere on the body! So according to their reports, patients got better by mere virtue of a needle or needles being inserted into their bodies at random locations.
This is not the first time I have heard such claims made by physicians trying to dismiss 3,000 years of Chinese medical history, case studies and theory.
It's their way of saying Chinese medicine is not only childlike but it efficacy is based solely on the placebo effect. This was the understanding I walked away with years ago after seeing a documentary on the subject hosted by Alan Alda.
In this documentary, a physician treated a patient with an illness using a single acupuncture point. The patient felt better. The next week the same patient was treated using a different acupuncture point. Again, the patient felt better.
And I remember thinking, "Of course the patient feels better. Both points selected are indicated for her problem." But the show's message was: acupuncture must work on the placebo principle since both points worked.
The theory of Chinese medicine is based on relationships in the body between organs, fluids, oxygen, thoughts, etc. And since there are many causes for any given disease and many associated signs and symptoms, to be truly effective the acupuncturist must select acu-points that address not only the main problem, but also the symptoms and secondary problems.
Thus, one could use the "Horary" acu-point for that time—the point in the body holding the most Qi for the current time period. Or, the Master point for the particular problem. Or a combination of points on different meridian channels to make an energetic current in the body. And so on.
So we practitioners say, "Of course many points work for any given illness. They are supposed to! But to get rid of the problem or alleviate the pain for the long term, the correct points must be selected and sequenced. Otherwise, acupuncture becomes a symptom-chasing method of masking problems in the short term. And this is not its domain.
Furthermore, the idea that a needle inserted into the body at any location and at any depth will heal the body is ludicrous.
Acupuncture is a science based on understanding etiology and pathogenesis of disease and the flow of qi (vital energy) in meridians (pathways) and specific location of points on those meridians.
Proper depth of needle insertion must also be mastered as well as precise location of insertion. If the needle misses the exact location of an acu-point, the patient will not experience the "arrival of qi." With no arrival of qi, there is no curative effect.
If you miss the point but stay on the actual meridian channel, you will still receive an effect, but not as strongly as if you were hit the point and channel concurrently. If you insert the needle too far, you can puncture an organ or artery. If too shallow, you miss the channel and fail to activate the energy.
This theory and energy anatomy is so important that students of Chinese medicine spend years memorizing and training to locate point accurately, to needle them precisely.
Moreover, acupuncturists become intimately familiar with several hundred different points, their effective uses in solo and in combination with others, and their contraindications. If these practices are not adhered to, patients would either fail to get better or they could get much worse.
And so the idea of inserting needles into the body at random to cure any illness or disease is pure fantasy. I've had patients tell me they went to another practitioner for their sinus problems, but felt no different after a dozen treatments.
After one of my treatments, their sinuses were already draining. They ask me how this is possible when the same points were used by both of us. The answer: the former practitioner missed the points, even by a fraction in any direction, or by incorrect depth of needle insertion.
Acupuncture points are each named and numbered and indicated for specific problems. This is based on thousands of years of clinical experience and millions of case studies.
And any acupuncturist will tell you that using points for stomach ache will not help neuropathy. Those points for acne will not help knee pain. Thus, inserting needles at random locations to cure anything and everything become a non-issue. It is simply a false statement.
If it was true, and I wish it were, then everyone who ever went to an acupuncturist would already be cured of all of their health problems. And each time you got a splinter, your body would suddenly be free of disease. For every bee sting, you would have one less arthritic joint.
So we are left with the problem of the media presenting to the public information on health that is bogus, misinformed and potentially hazardous.
But is it the fault of the Media to sensationalize a story by making it bipartisan? Or is the Establishment offering the information and queering it for their benefit?
While the public has no real way of knowing, it is probably safe to assume both parties are at fault. In the end, we can only take responsibility for our own health decisions.
So if you are considering trying something for your health that is out of the mainstream, do as much research as you can, visit centers, talk to other patients, and interview the practitioner.
Don't rely on reports by opposing organizations or sensationalized media presentations. They're only looking to push an agenda or make ratings.
Suffer from Joint Pain and Arthritis?


text:
Pinterest PINS shares jumped 9.6% to close at $21.51 on Jan 14 after an eMarketer report showed that it surpassed Snapchat SNAP as the third-largest social media service in the United States, following Facebook FB and Instagram.
Per the report, Pinterest had 82.4 million users in 2019, up 9.1% year over year compared with Snapchat's 80.2 million users, which was up 5.9% year over year.
Pinterest's user growth can be attributed to its universal appeal across different age groups, while Snapchat caters primarily to a younger audience.
Pinterest, Inc. Price and Consensus
Pinterest, Inc. price-consensus-chart | Pinterest, Inc. Quote
Pinterest's Expected User Growth In 2020
Notably, Snapchat has a commanding lead among younger users — 66.5% of kids aged 12 to 17 use it versus 28.1% for Pinterest, and 81.3% of young adults aged 18 to 24.
However, Pinterest is expected to benefit from growth in user base across age groups. The company's users are expected to make up 41.1% of all U.S. social network users in 2020, close to Snapchat's 39.7%.
The market research firm expects Pinterest to be more popular among U.S. users in the years ahead, with the online bulletin board's lead on the image-centric messaging service widening through the end of 2023.
Pinterest is forecast to keep on growing faster in future years: 4.4% in 2020, 2.8% in 2021, and 2% in 2022.
Pinterest's Top-Line Growth Initiatives for 2020
Pinterest's recent initiatives are expected to drive user growth in 2020 as predicted by the eMarketer report.
Ad Revenues
Pinterest generates the bulk of its revenues from U.S. users and is in the early stages of efforts to boost international ad sales. The company launched various features at the end of 2019 to support advertisers on the platform and attract new ones.
On Dec 10, 2019 the company reported more than 200 billion ideas saved to over 4 billion boards. Pinterest Trends was launched in beta to help brands get deeper insights into planning behaviors on the platform, and allow them to allocate budgets to campaigns during various planning stages.
Moreover, new business profile features with video and shop tabs, and expanding Catalogues and Shopping Ads features in France, Germany, Spain and Italy are expected to increase advertisers on the platform, thus driving average revenue per user in the near term.
User Growth
Recently, Pinterest launched emotional well-being activities for Pinners in nine additional countries, including the UK, Ireland, Canada, Australia, Singapore, India, the Philippines, Hong Kong and New Zealand. The feature, which was previously available in the United States, is expected to increase its international user base in the near term.
Moreover, in November 2019, Pinterest released a feature that lets users make purchases from a selected number of online shops. The Pinterest Shop feature has hundreds of Product Pins, and users will have the ability to choose from 17 curated shops. With 200 billion pins saved by Pinners to date, the feature is expected to boost active user growth in 2020.
However, increasing competition for ad dollars from the likes of Facebook, Amazon, Google and Twitter TWTR is a major headwind for the company.
Pinterest currently has a Zacks Rank #3 (Hold). You can see the complete list of today's Zacks #1 Rank (Strong Buy) stocks here.
Would you like to see the updated picks from our best market-beating strategies? From 2017 through Q3 2019, while the S&P 500 gained +39.6%, five of our strategies returned +51.8%, +57.5%, +96.9%, +119.0% and even +158.9%.
This outperformance has not just been a recent phenomenon. From 2000 – Q3 2019, while the S&P averaged +5.6% per year, our top strategies averaged up to +54.1% per year.
Click to get this free report
Facebook, Inc. (FB) : Free Stock Analysis Report
Snap Inc. (SNAP) : Free Stock Analysis Report
Twitter, Inc. (TWTR) : Free Stock Analysis Report
Pinterest, Inc. (PINS) : Free Stock Analysis Report
Racial inequality in Silicon Valley: Pinterest is among many tech companies struggling to become less white
CrowdStrike, Zoom Among 2019 Internet IPOs Rebounding In 2020
What Is Wharf Real Estate Investment Company Limited's (HKG:1997) Share Price Doing?
If You Had Bought HongDa Financial Holding (HKG:1822) Stock Three Years Ago, You'd Be Sitting On A 96% Loss, Today
How to Invest at Every Age
Five Questions to Ask About Your Company's 401(k) Plan


text:
Ben Stiller And Christine Taylor Split After 17 Years Of Marriage
Nick Markus May 27, 2017 6:00 AM PDT
Source: linkwaylive.com
Ben Stiller and his wife of 17 years have decided to get a divorce. The couple has two kids together. The Hollywood stars announced their unexpected split yesterday afternoon, Friday, May 27.
Considering they were together for almost two decades and stayed officially married 17 years, fans never expected them to have marital issues.
It looks like the reason for the divorce is a lot more complicated and personal than what usually takes place between divorced Hollywood stars.
Stiller and Taylor wanted to make it very clear that they still have a lot of "love and respect for each other" as well as for all that time they dedicated to one another.
They did not get into more detail about the reason they decided to separate but kept things short and positive, assuring their followers that they are going to continue being best friends and also focus on co-parenting.
"Our priority will continue to be raising our children as devoted parents and the closest of friends," the pair stated.
In the statement for Entertainment Tonight, they also kindly asked the press to respect their privacy and not stalk their kids for questions.
Taylor and Stiller have starred in many films together, one of them being the well-known Zoolander.
In the movie, Taylor played a reporter interviewing his character, Derek Zoolander.
The last time the splitting couple was spotted in public together was on April 18.
Are you sad to hear such a longtime couple is putting an end to their relationship?
Read more about ben stiller
Ethan Hawke Thanks Winona Ryder At 'Reality Bites' Tribeca Film Festival Reunion — Watch Full Panel And Lisa Loeb Performance Of 'Stay'
Ben Stiller Kills As Michael Cohen On 'Saturday Night Live' Says 'Now He Knows How Khloe Kardashian Feels'
Mar 3, 2019 5:01 PM PDT
Ben Stiller Praises His Father Jerry Following His Hospitalization
Feb 3, 2019 7:45 PM PDT
Shakira Reveals Why She Would Never Return To 'The Voice' Again!
Blac Chyna Makes Fans Happy With New Pics Of Her Kids - She Reveals 7 Vital Things A Child Needs To Hear


text:
Je Suis … nameless?
14 Jan 2015 by Laura Sjoberg | 0 comments
#JeSuisCharlie and #JeSuisAhmed have been trending this week in response to the tragic deaths from the attack on the French satire magazine Charlie Hebdo on January 7. #JeSuisCharlie is being used to defend the freedom of expression and the press of the magazine, and stand with those killed defending it, and #JeSuisAhmed is to remind those who would essentialize Islam and violence that an Islamic man died defending the right of the magazine to mock his religion through free speech. These hashtags have been used more than five million times.
The New York Times estimated that more than half a million Iraqi children died before 1995 from the sanctions regime (before its height in 1996 and 1997). It is now estimated that 5.4 million people have died in the ongoing conflict in the Democratic Republic of Congo. The 2004 Indian Ocean tsunami killed almost a quarter of a million people. In the United States, 1 in 100000 people starves to death every year – that's more than 3000 people. The leading causes of death on January 7, 2015; like on September 11, 2001 and other hallmark days for global terrorism – were largely preventable diseases, rather than war or terrorism. I don't know any of the names of any of those people – the starved Iraqis; the dead Congolese; the Indonesians, Sri Lankans, Indians and others killed and displaced by the tsunami; the starved Americans. I may be able to find some of them, but the overwhelming majority of those dead people will remain nameless to me, as will most of the victims of most of the tragedies in the world.
Don't get me wrong. I am for free expression, and against killing people for it (though also preferably for inter-religious respect and against essentialism). But, with Judith Butler, I am interested in what makes some lives grievable and others not – what the conditions that make life (and death) recognizable are. In a very different way, the #BlackLivesMatter movement has been asking a very similar question – how do some lives come to be signified as meaningful and some as meaningless? How are some lives individually valuable and others aggregated in statistics, or just ignored? I think that, whatever the answer to those questions are, they must be definition be unjustified metrics of visibility. So with that thought, for today, #jesuisnameless.
portafoglio alviero martini
michael kors uk sale
michael kors uk bags
mcm handbag
Categories: post | Permalink


Woodrow Mercer is a vibrant and rewarding place to work with offices in Birmingham, London, Leeds, Nottingham, Hull and Manchester. We pride ourselves in empowering and encouraging our team to do the very best that they can while ensuring that it is a fun and happy place to work. Recent incentives for our team include trips to Croatia, Ibiza, Las Vegas, Paris, Barcelona, Miami, Amsterdam Iceland and New York. This year, our top billers will be jetting off to Rio de Janeiro.
Since we formed in 2012 we have set upon a clear strategy of growth, offering countless opportunities to its people along the way. In that time we've developed divisions into market leaders and we're now looking to nurture the very best recruitment talent. We are looking for proven recruiters who want to make the next step in their recruitment career.
Whilst we expect all of our people to work hard and achieve certain goals, our management team work equally hard to create a fun, lively and enjoyable place for you to work. We consistently show our ambition to become one of the UK's best specialist recruitment businesses and strive to offer each and every one of our staff the chance to enjoy the fruits of our labour. We will tailor a career progression map that takes you from where you are now, and give you clear opportunities to strive to be one of the leaders of our business. Alternatively, if you're just looking to bill, we can accommodate that too!
If you are successful you will join a fast growing recruitment consultancy with many opportunities in front of you. You will benefit from a structured and comprehensive training programme, clear and target-based career progression as well as competitive salaries and uncapped commission.


The 210 metre CRC tower (China Resources Tower) opened in 2002 and has become one of Bangkok's leading serviced office providers with numerous well-known companies calling it home. With its prime location, impressive facade and stylish interiors the office spaces within are geared towards productivity and minimising hassle. There are multiple meeting rooms available for use by tenants and a team of admin and IT support staff on call should they be needed.
As part of the All Seasons Place complex, this serviced business centre is great not only for work but also for leisure as there are numerous shops, restaurants and hotels to choose from in the close vicinity. Wireless Road is probably Bangkok's most renowned for business and offers easy access to the rest of the city via the Ploenchit Station BTS station and the adjoining highways. The international airport is about 25 minutes away by road.


Puchi Busse is a Japanese light cake made by Lotte. This is a limited edition snack and only appeared for a short time in Japan. The cake consists of a lemon custard cream filling, and chocolate layer sandwiched between a whole-meal soft cake. The whole cake is only bite size and hence the puchi in the title which means petite. The cake has a distinctive cake smell typical of Japanese cakes of this type and the custard cream has a light lemon flavour which isn't too over bearing. The chocolate layer gives it a nice touch and brings a bit of a stronger dimension to the cake. The cake was pretty good and I would recommend it to all lovers of Japanese cakes.
Thanks Lina, I don't think they have this flavour anymore as it was a limited edition. The current flavour is Rum & Raisin.
It is an interesting and delicious desserts.


Have to leave my car outside the gate because the girls won't let me drive in. They aren't afraid of the car, even if I honk the horn.
Snuffy (now known as Chunk) and crew ready for breakfast.
Eva ready to go to work getting those cows!
Our old man at home, Ramirez, even snuggles up to his favorite little lamb. Ah, life on the farm!
OMIGOD! Eva has so grown up – I've been thinking of her as just a wee pup. . .
& Ramirez – what a trooper – have to admire his gumption & spirit.


...a pint-sized powerhouse from AMG.
Maybach may keep it on, but regular S-Class will not.
Too much of a good thing? Not so at Mercedes-AMG.
Going crazy with all of that tech!
Mercedes-Benz Launches A Subscription Service For U.S.
Mercedes-Benz Plans To Launch A Subscription Program For U.S.
Mercedes-Benz Drops Plans To Sell Diesels In U.S.
Mercedes-Benz Finally Has An A-Class for the U.S.


Teams Hibernians Tarxien Rainbows played so far 29 matches.
Hibernians won 20 direct matches. Tarxien Rainbows won 5 matches. 4 matches ended in a draw. On average in direct matches both teams scored a 2.86 goals per Match.
Hibernians in actual season average scored 1.96 goals per match. In 11 (91.67%) matches played at home was total goals (team and opponent) Over 1.5 goals. In 7 (58.33%) matches in season 2019 played at home was total goals (team and opponent) Over 2.5 goals.
Tarxien Rainbows average scored 1.21 goals per match in season 2019. In 12 (100.00%) matches played away was total goals (team and opponent) Over 1.5 goals. In 9 (75.00%) matches played away team was total goals (team and opponent) Over 2.5 goals.
STREAKS FOUND FOR DIRECT MATCHES!!» Hibernians played 2 matches in a row without draw.
» Hibernians won all recent 2 matches in a row.
We invite you to check Hibernians and Tarxien Rainbows match statistict (Tab Stats->Match statistics), where you will find out who is the best scorer. Also you can check the statistics of possession, shots, corners, offsides, and many other applications.
In tab Goals stats (tab Stats->Goals stats) check how many loses and scored goals per game, how many games won and lost to zero. You will find what results teams Hibernians and Tarxien Rainbows usually end matches with divided into first and second half.
In tab Form(Stats->form) you find graph teams form and a list of all matches of Hibernians and Tarxien Rainbows in season.


text:
Home›Savanna desert›Two rhinos arrive in new $ 17 million habitat at The Living Desert
Two rhinos arrive in new $ 17 million habitat at The Living Desert
Two young rhinos will soon be joining The Living Desert family, moving into a new $ 17 million, 4-acre habitat that is under construction right inside the entrance to the zoo.
Rhino Savanna will be a multispecies habitat with eastern black rhinos Jaali and Nia as the star inhabitants, which is expected to open in November.
Jaali (pronounced Jolly) is a 1.5 year old male from Potter Park Zoo in Lansing, Michigan. The name means "mighty" in Swahili.
Nia (pronounced Nya), which means "goal" in Swahili, is an almost 3-year-old female from the Cleveland Metroparks Zoo in Cleveland, Ohio. Eastern black rhinos are listed as Critically Endangered with fewer than 5,600 across Africa.
Jaali and Nia were selected for the living desert through the breeding recommendations of the Zoo and Aquarium Species Survival Plan.
The new Rhino Savanna is part of a multi-phased, multi-million dollar plan for 10-year zoo additions and expansions. The first phase was the new $ 10 million admission area and infrastructure improvements, completed in 2019. The next phase will include a lion habitat and a special events center.
"We are delighted to welcome Jaali and Nia to The Living Desert this fall," said Allen Monroe, President and CEO of The Living Desert Zoo and Gardens. "This is the first time that The Living Desert will host rhinos, and the team has been working hard to prepare for their arrival."
Jaali was born on December 24, 2019 to his mother, Doppsee, and father, Phineus, and his birth marked the first rhino birth at Potter Park Zoo in its 100-year history. Jaali is very curious and loves attention, according to her Potter Park Zoo animal care team.
Nia was born on August 20, 2018 to her mother, Inge, and father, Forrest. Her animal care team shared that Nia is smart and eager to learn and participate in her breeding training.
"We can't wait to introduce Jaali and Nia to their new home at The Living Desert," said RoxAnna Breitigan, director of animal care at the zoo. "As one of 25 establishments accredited by AZA (Association of Zoos and Aquariums) to care for Eastern Black Rhinos, we are all working together to ensure this iconic species does not become extinct. These two have been strategically paired, and we have high hopes for their future breeding success here at The Living Desert. "
Rhinos are generally solitary creatures and don't herd like some animals, Monroe said.
Because Nia and Jaali have never met, when they arrive at Living Desert the habitat is such that they will be kept physically separate for a while.
"They will be able to see each other, but we won't try to make introductions right away," Monroe said.
It will take a few years before both reach breeding age. Females are usually 4-6 years old when their reproductive system is fully developed. Males can be anywhere from 7 to 10 years old, Monroe said Thursday morning as he walked and drove a golf cart through the habitat, pointing to the many features under construction – for animals and guests.
Create the right environment
In captivity, rhinos have a lifespan of 40 to 50 years, Monroe said, so it is expected that Nia and Jaali will stay with the zoo for a long time.
Included is a 3,000-square-foot covered care facility where Nia and Jaali will be brought at the end of each day, fed and slept at night, and received their medical care and exams, Monroe said.
It will include a variety of mobile stalls that can either give the rhino access to the entire area or be placed in a smaller space for medical care or the birthing area when the time comes, he said.
"Anything a rhino could want to call home," will be provided in the habitat, Monroe said.
While rhinos come from dry, desert habitats, "we still provide them with basic comfort with foggers and fans, and even heaters to take out the winter chill in the morning," Monroe said.
The living desert is moving away from the all-concrete living spaces that zoos have traditionally created for rhinos, Monroe said.
"These concrete surfaces are much harder than natural soil and large animals, like rhinos, can get arthritis and joint problems when walking on concrete surfaces," Monroe said. "So we designed our rhino barn to have a natural substrate. "
Having that soft surface will improve the quality of life for rhinos throughout the habitat, Monroe said.
"They won't have to be kept on a hard court anywhere," said Monroe.
The exhibit is designed to bring guests into the rhino world and as close to the animals as possible while keeping everyone at bay, Monroe said.
There is a rhino bridge over an underground passage that guests will use to enter the exhibit from the zoo admission area and a separate guest bridge that will connect guests to the nearby Giraffe Savannah .
A new cafe is also being built at the top of the bridge, next to the giraffe habitat, with an outdoor seating area where guests can enjoy the full view of the living desert and surrounding mountains, Monroe said. .
The Rhino Savanna is designed and built with state-of-the-art features that ensure animal welfare and care comes first, including wide meadows, rocky terraces and a mud pit and water trough, Monroe said.
It will also contain educational information so that guests can learn more about Eastern Black Rhinos.
The main threats to black rhinos are humans and poaching for their horns.
"Rhinos are iconic symbols of the wildlife trafficking crisis, and this new habitat will help us educate our clients about the plight of the rhino and allow us to continue our efforts to protect the black rhino in Africa," said Monroe.
Native to the savannas and grasslands of southern and eastern Africa, black rhinos are browsers that feed on trees and bushes and exhibit distinctive features, including two horns, a prehensile lip, large cone-shaped ears, and thick skin. They can weigh over 3,000 pounds at maturity.
"As a leader in desert conservation efforts, The Living Desert supports many projects to help build black rhino populations in southern Africa," said James Danoff-Burg, zoo conservation director. "We are actively working in partnership with organizations to support innovative anti-poaching efforts, initiating education and community empowerment programs, and combating illegal wildlife trafficking in Africa and here at home. . "
There are 11 species of furry, feathered, and subterranean species new to the living desert that will join black rhinos in habitat, including springbok, water cob, pelicans, hairless mole rats, and mongoose.
Advance tickets required
The Living Desert is celebrating its 50th anniversary, interrupted last year by the COVID-19 pandemic which closed the zoo for several months. Since it reopened in July, occupancy has been reduced to meet state and county health and safety guidelines.
Tickets must be purchased in advance, even by members, to allow the zoo to stagger admissions. This practice could continue beyond the pandemic, Monroe said, as it helped limit crowd flow, giving guests a better experience.
The Living Desert, which spans over 80 acres in Palm Desert and Indian Wells, is home to over 450 animals and birds.
The zoo opened its Australian Adventures habitat, where visitors can walk among wallabies last summer.
The entrance to the zoo is at 47-900 Portola Ave., Palm Desert.
For tickets and more information on The Living Desert's COVID-19 schedules, exhibits, programs and protocols, visit livingdesert.org. Parking is free.
Desert Sun reporter Sherry Barkas covers the towns of La Quinta, Indian Wells, Rancho Mirage and Palm Desert. She can be contacted at sherry.barkas@thedesertsun.com. Follow her on Twitter @TDSsherryBarkas
Nevada Museum of Art features an Andrea Zittel exhibit and high desert test sites
Palm Desert Mayor issues proclamation recognizing AAPI ...
Photographing the Namib Desert: "One with Forever"
Living Desert will host the WildLights event from November 24 to December 24, 30
Master florist brings a touch of Europe to San Pablo in Palm Desert
NYC Celebrates 9/11, Operation Desert Storm, War on Terror
One of Coachella Valley's biggest job fairs is scheduled for Thursday
Desert Mountain and Catalina Foothills win Division I and II tennis team titles
The Sahara Desert was once green and lush. Then the humans appeared.
Customers struggling with debts threw a second lifeline ahead of the lockdown


On a relatively slow Friday, I decided to step out of the office and eat a sit-down lunch with a couple friends. Before I knew it, we had a three hour lunch at Jean Georges; and it was worth it.
Jean Georges never fails to impress me in presentation, taste, or service.
Apologies, but given how far behind I am, the next few entries will have to be brief.
I took my parents to Gramercy Tavern for dinner the week they were the NYC and here's how it went.
Scallop over a slice of tomato amuse bouche. Watery and very light tasting with some japanese rice on top for added texture.
A great smoked trout that was tender and juicy.
The shrimp was nice with the fried okra and corn giving the dish some color. Unfortunately, we had eaten a similar shrimp dish at Jean-Georges for lunch the same day and the ones there were sweeter and bigger.
The beef fazzoletti was a bit too saucy so I felt it overpowered the pasta and dish as a whole. The pasta itself was very tender and thin, not overcooked.
The lamb was probably my favorite dish of the night. It was cooked perfectly and everything on the dish was well balanced. Even presentation was nice as it seemed like the lamb was in a natural green forest.
Sadly, the pork loin was a bit tough and hard to cut into. But on the positive side, the pork belly was fatty and delicious (no surprise there).
The arctic char was decent, but I was really impressed with the eggplant in the dish. It was nicely charred from the grill with lots of eggplant flavor; absolutely delicious.
Lemon panna cotta dessert bite before our dessert courses.
Trio of desserts were all pretty good.
Petit fours: chocolate peanut butter squares, strawberry hazelnut macaron (delicious!), and honey chocolate.
And finally, almost as a parting gift, everyone was given (what I thought was) a brown sugar cinnamin coffee crumb cake muffin to take home. Thanks Gramercy Tavern!


text:
Q: Affect only the onhover div tag with JQuery and SLidedown() function Is there a way to create a JQuery slidedown() function that will be assigned only on the div where the mouse is focusing on.
This kind of thing is possible with the combination of JQuery but I managed to achieve only this: I can make it work only if every div has separate class. If I name them the same, it will open (slide down) all of the div tags on the hover of the first div.
So, I hope it is an easy solution that I cannot see.
My code is below:
FIDDLE
HTML

1. Question (on hover)

Description: Here goes the question one from the php variable

2. Question (on hover)

Description: Here goes the question two from the php variable

3. Question (on hover)

Description: Here goes the question three from the php variable and so on

JQUERY
jQuery(function () {
  for (var i = 0; i < 100; ++i) {
    (function (i) {
        jQuery('.desc' + i).hide();
        jQuery('.q' + i).hover(
            function () {
                jQuery('.desc' + i, this).stop(true, true).delay(300).slideDown(300);
            },
            function () {
                jQuery('.desc' + i, this).stop(true, true).slideUp(200);
            });
     }(i));
  }});

CSS
.desc1,.desc2,.desc3 {
    font-size: 12px;
    font-style: italic;
}

.q1,.q2,.q3 {
    font-weight:bold;
}

So, this is working when there is only 3 questions, but what about a hundred? With my code it will be pointless to create css for every div, so I know there is a simple solution :) or not :(

A: The Fiddle: http://jsfiddle.net/GzxJf/4/
The Script:
jQuery(".desc").hide();

jQuery(".q").hover(function(){
    jQuery(this).find(".desc").stop().slideDown("slow");
}, function(){
    jQuery(this).find(".desc").stop().slideUp("slow");
});

A: Here is one potential solution that may work for you:
*Updated Demo Fiddle
Since you don't know how many questions there may be, or if some will be loaded or removed dynamically, I would delegate off of the wrapping element (in this case the document). Then all you need to do is be consistent with your classes in the questions.
EDIT - In the hopes to avoid confusion, I've gone ahead and updated this to add a wrapping element to avoid binding on the document. See below:
HTML:

1. Question (on hover)

Description: Here goes the question one from the php variable

2. Question (on hover)

Description: Here goes the question two from the php variable

3. Question (on hover)

Description: Here goes the question three from the php variable and so on

JS:
$('.q-wrapper').on('mouseenter mouseleave','.q', function(e){
    if (e.type === 'mouseenter'){
        $(this).find('.desc').stop(true, true).slideDown();
    }
    else {
        $(this).find('.desc').slideUp();
    }
});

A: In your code there is a parameter this which will point on the divs where the mouse cursor is. So, actually, this will work fine as you can see in my fiddle below.
Just change a little your code (css classnames and jQuery elements) and it will work.
FIDDLE
HTML

1. Question (on hover)

Description: Here goes the question one from the php variable

2. Question (on hover)

Description: Here goes the question two from the php variable

3. Question (on hover)

Description: Here goes the question three from the php variable and so on

jQuery
jQuery(function () {
  for (var i = 0; i < 100; ++i) {
    (function (i) {
        jQuery('.desc').hide();
        jQuery('.q').hover(
            function () {
                jQuery('.desc', this).stop(true, true).delay(300).slideDown(300);
            },
            function () {
                jQuery('.desc', this).stop(true, true).slideUp(200);
            });
     }(i));
  }});

CSS
.desc {
    font-size: 12px;
    font-style: italic;
}

.q {
    font-weight:bold;
}

redpajama_set_name: RedPajamaStackExchange


Layflat screw-type regular cut-end rayon wet mop heads. Grade 1 yarn for high tensile strength/durability. Rayon material has minimal linting. Ideal for applying floor finish and disinfectants. Mop goes from the bag to the bucket with no break-in period. Excellent absorbency that requires fewer trips to the bucket. Fast release promotes fasting drying after use and is mildew resistant. Size: 16 oz.


text:
Q: Angular Lazy loading not Navigating I'm want to implement Angular lazing loading in my app.
I read through so many books and it seems this the normal way to do it, maybe I missed something important and it's been two days.
https://github.com/kondasMajid/angula-lazy-loading
App-routing-Module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

const routes: Routes = [
  {
    path: '',
    redirectTo: '',
    pathMatch: 'full'
  },

  {
    path: 'home',
    loadChildren: './home/home.module#HomeModule'
  },
  {
    path: 'view',
    loadChildren: 'app/view/view.module#ViewModule'
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

app.component.html
<button routerLink="/view">view</button>

<router-outlet></router-outlet>

view.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { ViewRoutingModule } from './view-routing.module';
import { RouterModule, Routes } from '@angular/router';
import { ViewComponent } from './view.component';

const routes: Routes = [
  {
    path: '',
    component: ViewComponent
  }
];

@NgModule({
  declarations: [],
  imports: [
    CommonModule,
    ViewRoutingModule,
    RouterModule.forChild(routes)
  ]
})
export class ViewModule { }

view.component.ts
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'view',
  templateUrl: './view.component.html',
  styleUrls: ['./view.component.css']
})
export class ViewComponent implements OnInit {
  constructor() {}

  ngOnInit() {}
}

A: There seems to be a lot of problems with your current implementation:

*

*You've used forChild instead of forRoot in your AppRoutingModule.

*In your ViewModule you're doing I don't know what. Ideally, your Routes should be defined in a ViewRoutingModule and then the RouterModule should be exported from there and imported in your ViewModule.

*The empty route('') in your AppRoutingModule's Routes config might end up being an infinite loop. So you might want to redirect to somewhere else in that case.

Fixing these two issues should make it work:
AppRoutingModule:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

const routes: Routes = [
  {
    path: '',
    redirectTo: '/home',
    pathMatch: 'full'
  },

  {
    path: 'home',
    loadChildren: './home/home.module#HomeModule'
  },
  {
    path: 'view',
    loadChildren: 'app/view/view.module#ViewModule'
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

ViewRoutingModule:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { RouterModule, Routes } from '@angular/router';
import { ViewComponent } from './view/view.component';

const routes: Routes = [
  {
    path: '',
    component: ViewComponent
  }
];

@NgModule({
  imports: [
    RouterModule.forChild(routes)
  ],
  exports: [
    RouterModule
  ]
})
export class ViewRoutingModule { }

ViewModule:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { ViewRoutingModule } from './view-routing.module';
import { RouterModule, Routes } from '@angular/router';
import { ViewComponent } from './view/view.component';

@NgModule({
  declarations: [ViewComponent],
  imports: [
    CommonModule,
    ViewRoutingModule
  ]
})
export class ViewModule { }

Here's a Sample StackBlitz for your ref.

A: Your app.routing.ts should read like this that will be the first change
imports[RouterModule.forRoot(routes)],
Second change is that you need to redirectTo correct path when your route is empty
Try something like this
{
    path: '',
    redirectTo: '/view',
    pathMatch: 'full'
}

Hope these changes will work - happy coding :)
Update:
I think you missed a major missing here - I don't see your AppRoutingModule imported inside your AppModule
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule //This will do the trick
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Try the above changes and import your routing inside your module - Hope it works


1. Take the cable car that sweeps above Funchal's ravine-like valley to the Monte Palace Tropical Garden where the wooded paths are lined with elaborate Portuguese tile work, 17th century coats of arms, ancient stone window frames and many other surprises.
3. The scenic road that twists and turns to the summit of Pico do Areeiro runs through a volcanic land covered in rare flora and provides unparalleled views of valleys laced with streams. It's also a jumping off point for short walks to see the central mountain range rising from a thick cloud cover.
5. Drive to Curral das Freiras, a village isolated by deep abysses and thick woodland has been a haven for 16th century nuns who fled a local convent when pirates ransacked Funchal. At the Nuns's Valley restaurant you can sample the homemade chestnut or almond cakes.
6. Try a glass of poncha -- considered a popular Madeira drink made of sugar cane brandy plus honey and lemon -- at Victor's Bar, a rural restaurant near a trout hatchery with basalt stone pools.
7. Once you've checked out the cozy A-frame thatched cottages in the village of Santana you can have lunch at Quinta do Furao where a wrap-around porch provides views of rugged sea cliffs and giant offshore rocks. When I dined here for lunch, I enjoyed grilled limpets, fresh cheese and bread baked in a wood oven.
8. Visit Funchal's fish market where you can check out the scabbard fish, an island delicacy that looks fierce with a large eel-like body, bulbous eyes and sharp jagged teeth.
9. Whether it's the English-style and tropical gardens, 18-hole par 72 golf course (Perched at 500 feet above sea level, the clubhouse provides panoramic views of the Bay of Funchal), or Casa Velha Do Palheiro, a five-star country house, you'll find plenty to do at the Palheiro Estate that dates back to the 1800s. This former hunting lodge provides guests with the use of the private yacht. Plus you won't want to miss a meal at their restaurant, considered one of the island's best with some select Portuguese wines available. When I was there, they served: pigeon and foie gras with gingered sweet potato puree; blue lobster and avocado with mango in a rice paper wrap. You can have high tea with scones in the afternoon or stop by the teahouse for homemade pastries.
10. Treat yourself at the hilltop Zen-inspired Choupana Hills Resort and Spa. Here, guests are pampered in a tranquil property with almost three dozen bungalows made of teak and basalt stone. (The suites are my preference with their canopy beds and wraparound terraces.) Light streams into the interior, thanks to walls of windows overlooking the lush gardens or the Bay of Funchal far below. Here, you can have aromatherapy, hot stone massage or an algae wrap and soon Reiki treatments.
I love this BLOG!!! is that main photo from Iceland?!
Yes, that's an Icelandic photo. You must totally know that country. Love it.
What's cooler - Madeira or the way you or the way you blog about it?
Love reading . . .
Thanks for taking the time to comment. Madeira is one cool place for a brief or extended visit.


text:
Atherton Post office wins national award
Posted on Wednesday 3 April, 2019
THE Atherton Post Office has created history after they were named the inaugural Australia Post Office of the Year at a gala dinner held in Melbourne a fortnight ago. The Atherton Post Office, which is located at Robert Street, Atherton, took out the top gong for their consistently outstanding performance across commercial results, customer service, community engagement and safety.
Atherton Post Office Manager Wendy Wyatt said the award came as a welcome surprise. It's amazing recognition for the work that we do and something we definitely didn't expect," she said. "We're all very dedicated to our jobs and every one of us loves coming to work here."
Ms Wyatt said she believes their community-focused approach is a major reason as to why they were named the first ever Post Office of the Year. "We're big on keeping it local," she said.
"Atherton is a really close-knit community and we know most of the people who come through the doors, which is great for building long-term customer relationships."
Ms Wyatt took time to thank those who have contributed to the Atherton Post Office's continued success. "First I would like to recognise the members of this team, there are five of us along with two casual workers who help out when required – they're all fabulous people and do a wonderful job. We also share the office with a great team of posties," she said.
"I also want to thank our loyal customers, without them we wouldn't have received this award and we're extremely appreciative of their support. Many of them extended their congratulations after we won the award which means a lot.
"And lastly I want to thank the network of post offices around us that we draw on for support, along with our Area Office and Area Manager who provide enormous assistance when needed."
Australia Post's Executive General Manager of Community and Consumer Nicole Sheffield said Australia Post see in their winner an absolute model of customer service. "Last year's result was 85 and they are smashing even this outstanding result with this year's Net Promoter Score to date tracking at an absolutely incredible 94.9," she said.
"This is a Post Office that absolutely sits at the heart of their community – they genuinely love their community, are always willing to go above and beyond and take on any challenge, and their community love them for it."
Ms Sheffield said some recent highlights have included school visits teaching prep students about writing letters and the delivery process, supporting the local RSL sub branch and donating their own time to support local shopping nights, selling over $5000 worth of product.
"Fostering a friendly and supportive spirit of competition has seen them stand out as regular high performers in our Retail Rewards program," she said.
"They've come first in their network the past three years and regularly place highly across the state and nationally.
"And their Postal Manager is a stand out too; as well as leading this amazing team, they regularly provide training and support to other licensees in their network and she has acted in the Network Manager role."
Future funding of TR4 management
Motel looks to boost tourism


Birthday boy/girl receives a free pass.
Add Carlos to your party for only $10. Carlos will visit your party & take a group photo!
Everyone will also receive 10 free tokens to enjoy our redemption games.
Add Carlos to your party for only $10. Carlos will visit your party & take a group photo.
Contact us if you're interested in discussing other options or renting out our space for your next event!