Engraving: GHASHANUZ BÛRZ – Dark Fable in "Black Speech of Mordor" on grip spacer.
Grip: European Beech core with Cow Hide wrap.
Hilt Furniture: Mild Steel with forge scale. Stainless steel spacer.
"Made camp just past the river black. Within its wood, moon at our backs. Aloft I heard a mournful sound, soft voices on the mist abound. Strange voice within the depth of shadow, through darkened wood and moonlit meadow. As voices fade into the trees, it strides from shadow ,killing three. The rest have all but seen a ghost, as four more fall defending post. The misty chill now felt by all awake within the shadow fall. It sickens it weakens, all those in it's sight, imparting its bearer an unholy might. The stench of its power made thicker with blood, no attempt to describe it could be understood.In seconds it happened My guard was dispatched, now bloody, lay dying my men in his tracks. Icy fingers, cold daggers both tug at my will as my keepers have fallen he faces me still. The foe with the black blade with me as his last, slowly lifts up his edge and points to my past. With a tongue not spoken in many a year, my thoughts heard his whisper and were stricken with fear. This Lord of the darkness a warning he shared, to never come back, my life to be spared. So as swift as the blade that had just claimed my clan, heeding word of the stranger I head back for my land. Where I've been, where I've come from, my kingdom awaits, I long for the comfort of its wrought iron gates. Adventure and travel concern me no more, for there's darkness and suffering outside my door. My soul has been tainted with weakness and fright, no more shall I walk through my kingdom at night. I have seen him and heard him I know he exists, this commander of shadows, his vision persists. While sleeping and dreaming he pierces my mind, no comfort nor solace shall I dare hope to find. Not to be murdered was mercy in the when, this curse and its torment not known to me then. The black blade it haunts me, it's driving me mad, in fear of my shadow no rest have i had. I've begged for forgiveness, and cried in despair, my kingdom, my treasures I leave to my heir. This day it is over, no more shall I fail, speak not a word of my harrowing tale. My death is a journey, and the mandrake my guide, no more will I suffer the ebb of this tide. Bequeathing my reign and gold of my throne, it's fate to my son to decide on his own. I leave you with sadness and darkness of heart as a man who was greedy and vane from the start. I'll exit with warning to all that would hear, mistakes of man's frailty are the worst that I fear. Stay far from temptation of power and might, do what you know in your heart to be right. My wraith, my consciousness or figment of thought, good questions to ponder or all is for naught. I head for the clearing laid down in my bed, I hope that you'll remember all this that you've read. My travels have ended and yours just begun, no rules to remember except maybe one. Stay far from the river whose waters run black, from the forest beyond them no man shall come back."


The South Korean company Samsung Electronics has announced that users of its smartphone Galaxy S9 first in Russia received the opportunity to make voice calls in 4G networks with two SIM-cards (Dual VoLTE). The service is available to subscribers of operators "the Megaphone" and MTS.
Dual VoLTE supports voice calls VoLTE and HD quality for any of the used SIM-cards simultaneously, provided support VoLTE operator. Another advantage of this technology is that if before 4G was available only for one selected SIM card, now the connect 4G is available for both. Wi-Fi Calling is also no longer tied to one SIM card is working in 4G mode.
The Company MEIZU announced the start of sales in Russia of its smartphone MEIZU MEIZU 15 and 15 LITE, devoted to the 15th anniversary of the company. While these devices are distinguished by the presence of traditional displays with an aspect ratio of 16:9, but without eyebrows and without frames.
The South Korean company Samsung Electronics announced the launch of budget smartphones Galaxy J4 and J6 in Russia, which can be purchased at the official online store of Samsung and partners throughout Russia. Price of the Samsung Galaxy J4 is 12 990 rubles, Samsung Galaxy J6 – 15 990 rubles. Models are available in black, gold and grey (only Galaxy J6) colors.
The Company "M. Video" and "Eldorado" summed up the retail tablet sales in the first quarter of 2018, where he noted that the market stabilized, the demand in March exceeded the last year indicators in monetary terms by 5%. In January-March, Russia has sold more than 780 thousand units, totaling more than 7.7 billion rubles. Tablets Huawei has reached almost a quarter of the market in natural and monetary terms, and become the most popular brand.
Huawei in the first quarter of 2018 compared to the same period last year increased sales by 2.5 times and took a quarter of the market in total retail sales and online due to the growth of sales of devices in the dynamic middle price segment. More than half sold in the market of consumer tablets cost 10 to 15 thousand rubles, and about a third of the device cost from 15 to 25 thousand rubles are accounted for by Chinese manufacturer.
The South Korean company Samsung Electronics has launched a new service for Russian users – repair delivery service. In this project, couriers Samsung will ship the device to the brand service center and bring them back after repair.
This Service is available to owners of Samsung smartphones with a valid warranty in Moscow (within MKAD), Saint-Petersburg (within KAD), Yekaterinburg, Novosibirsk and Rostov-on-don. The user needs to pass to the courier smartphone, charger and accessory if the problem is directly related to the operation of this accessory. Average repair time is 1 to 3 days.
Chinese company Huawei introduced in Russia a new smartphone Honor 7C, focused, in her words, on the youth audience and people who are using technology to perform everyday tasks. Honor 7C received the support of wireless technology NFC, which provides payment systems and contactless sensors, as well as face recognition to unlock the device just by looking at the screen. In addition, the smartphone is equipped with dual high resolution camera and FullView screen.
The South Korean company Samsung has announced the start of sales of its new smartphones Galaxy A6 and A6+ in Russia. The end of the month these novelties will go on sale in Samsung brand stores and partner stores throughout Russia. Smartphone users will be available two models of Samsung Galaxy devices Samsung Galaxy A6 and A6+ available in blue, black and gold colours.
Chinese company Huawei announced the beginning of sales in Russia of its flagship smartphone Huawei P20 Pro in the new twilight color of the body and the continuation of sales of the device in the color midnight blue. The new color scheme is a gradient of purple and blue hues. Huawei P20 Pro in the twilight color can be purchased in the official online store of the company, and in shops-partners of the company.
Chinese company Huawei presented on the Russian market its new smartphone Honor 7A Pro, received several bonus features, including facial recognition technology, the fingerprint scanner 13 MP camera and 5.7-inch FullView screen resolution of 1440x720 pixels.
The Company Sony Mobile announced the start of pre-orders on their new flagship smartphone Xperia and Xperia XZ2 XZ2 Compact.
The Company MEIZU has announced the Grand reduction of prices on popular models of smartphones in Russia, which she was timed to the onset of spring.
Chinese company Huawei announced the expansion of the color gamut of their devices and announced the beginning of sales in Russia of its flagship smartphone Honor View 10 in the new red hull color, which differs from artificial intelligence technology and face detection for unlocking the smartphone. The novelty is available starting from February 27 in the online shop of the manufacturer.


Enrich your know-hows on the housing climatic responsive design strategies by browsing through our collection of design books and handbooks.
We also host a section for the various studies and researches on green buildings by authors and researchers who are green building enthusiasts.
Various official documents issued in conferences outlining the presentations and outcomes have been collected and compiled here.
The uploaded videos include exclusive clips produced by e4g.org and other carefully selected clips on green buildings in Vietnam.


Toucan Hostel Budapest i Budapest, Ungarn: Bestill nå!
Toucan Hostel Budapest offers comfortable lodging in the heart of Budapest, in the Jewish district. Affordable prices, clean and cozy rooms with chilled atmosphere - a place to retreat from the noise of the party district below. We welcome our guests on the corner of Rakoczi and Kazinczy str. right above the most frequented area of Budapest's nightlife. Our friendly receptionists will help you have a great time visiting the city by giving you in-depth guidance about arts and entertainment, leisure and recreation, tours, trips, food and drinks.
We are located in the geographic middle of central Budapest. On the corner of Kazinczy and Rakoczi str., halfway between Astoria and Blaha Lujza sqr, this is an ideal spot for walking, biking or even shipping. Both boulevards are 5 minutes away, which places the Hungarian National Museum, St. Stephen's Basilica and the legendary Vittula pub in the neighborhood. We are along the main bus lines (5, 8E, 7, 178) and a couple of corners from the most frequented tramlines (4, 6, 47, 48, 49).
Toucan Hostel provides twin rooms and 4-8 bedded dormitories. All our rooms are equipped with showers and toilets for the highest privacy. The beds are mostly comfortable bunk beds. The kitchen is fully equipped, so you and your friends can store and cook your own food. We offer free tea, coffee. What we offer: 24 h reception; Wi-Fi; free towels; free coffee / tea; fully equipped guest kitchen; hair driers to borrow; security safe at the reception; private bathrooms; private lockers; laundry facility (€15).
The rooms were alright, but they were incredibly hot. They have laundry, which we thought was nice, until staff ran our nice blouses and such on 90c program, right after we asked which one was the 40c one. The clothes were however not thoroughly clean, and they did not dry even after hanging them up for a long while due to the humidity and warmth of the room. Additionally they did not have towels nor hand soap in the room nor for sale/rent. Their response was "this is a hostel" when asked.


text:
Microsoft Edge's PDF reader gets a nifty new feature on Windows…
Home Windows Phone Windows Phone Apps & Games
WhatsApp Beta for Windows Phone updated with live location and more
Ivory Soda
Image Courtesy: onMSFT.com
As we all know WhatsApp is working on a couple of exciting new features which are yet to go public. Meanwhile, WhatsApp is rolling out a new update to its Windows app which brings many exciting noticeable new features. With latest update app has been pushed to the version 2.18.30.
With version 2.18.30 app gained the ability to search participants in a group. When you go to the Group Info page you will see a search box which allows you to find any group member instantly.
As you know WhatsApp has been working on a feature called Live Location. The Live Location feature allows you to share your real-time location for a specific amount of time. You can share your live location in a group chat or to one contact via an individual chat. With version 2.18.24 we've seen the first glimpse of this feature on Windows Phone. However, this feature is still hidden in the latest update.
Apart from that, Download My Data feature is also coming to Windows Phone in an upcoming update. In case if you missed it Download My Data will allow user's to download a report of user's data from WhatsApp servers. (PS: We don't know what it might include apart from your tagline and your name.) However, it will take up to 20 days to generate your report from WhatsApp servers and you will get a notification once it's ready to download.
You can go ahead and download the latest version of WhatsApp Beta app from here via Microsoft Store. And let us know in a comment below if you find any interesting new feature in latest update.
SOURCEwabetainfo
Windows 10 Mail app removes reference to Windows 10 Mobile in default signature
Telegram Messenger for Windows Phone updated with Telegram Passport support and more
WhatsApp for Windows Phone is getting new "Forwarded label" feature
Telegram for Windows Phone is getting a new update with improvements
"Send Messages" feature now available on WhatsApp Beta for Windows Phone
WhatsApp for Windows Phone updated with minor bug fixes

redpajama_set_name: RedPajamaCommonCrawl


text:
Your guide in English to films showing in Germany.
Metallica – Through the Never
Opening 3 Oct 2013
Directed by: Nimród Antal
Writing credits: Nimród Antal, Kirk Hammett, James Hetfield, Robert Trujillo, Lars Ulrich
Principal actors: Dane DeHaan, James Hetfield, Lars Ulrich, Kirk Hammett, Robert Trujillo
Settle down for a 90-minute, non-stop, live concert of the world's most successful heavy metal (or trash) band: Metallica. Band members are Jan Hetfield, Lars Ulrich, Kirk Hammett, and Robert Truijillo. Hetfield and Ulrich are original founding members; they started it up, right there in their southern California garage (naturally) in 1981, and now, 32 years later, they still seem dedicated, powerful, and, believe it or not, young. Their success gives them new energy, besides the fact that they just love their work. After having achieved all goals, they decided to film a concert – in the superlative. They connected with director Nimród Antal and stage builder Mark Fisher. The stage is 61 x 18 meters, almost as big as a hockey field. There were 24 cameras, and the viewer is practically on stage with the band. They revived props from former concerts such as the Roman goddess of Justice, coffins, an electric chair, crosses, and naturally all kinds of balls of flame. They played a pre-film concert in Mexico and then took it all to Vancouver and Edmonton in Canada, where they played and filmed five concerts which resulted in 60 hours of material. For variety, they created a simple story about Trip (Dane DeHaan), a Roadie who must fetch something from a fictitious city; Trip experiences a car wreck, run-ins with a mounted hangman named Death Dealer, and a post-apocalypse neighborhood. These "events" relate back to songs, although simply the concert alone would have been enough. All for a cool 32 million dollars.
You don't have to be a Metallica fan to appreciate the end result and enjoy the music. It's in 3D, but if you like clearer, less dark, scenes, take off the glasses. Language is easy: there is no text; the music is the plot. You'll hear "The Memory Remains," "And Justice for All," "Nothing Else matters," etc., 16 songs in all. This will find an appreciative audience in Hamburg, considering that all 74,000 tickets for the annual Wacken Heavy Metal Festival 2014 (!) sold out in 44 hours after they went on sale 11 months in advance. And when the musicians say, "Are you alive? How does it feel to be alive?" you'll definitely scream, "yes." Stay until the last minute for a small musical gem. (Becky Tan)
Mehr denn je (More Than Ever, Plus que jamais) (01 Dec)
Der Räuber Hotzenplotz (08 Dec)
She Said (08 Dec)
Weisses Rauschen (White Noise) (08 Dec)
Avatar: The Way of Water (15 Dec)
Der Gestiefelte Kater: Der letzte Wunsch (Puss in Boots: The Last Wish) (22 Dec)
Ennio Morricone - Der Maestro (The Glance of Music, Ennio) (22 Dec)
EO (22 Dec)
Annie Ernaux - Die Super-8 Jahre (The Super 8 Years, Les années Super-8) (29 Dec)
Belle & Sebastian - Ein Sommer voller Abenteuer (Belle et Sébastien: Nouvelle génération) (05 Jan)
Operation Fortune (Operation Fortune: Ruse de guerre) (05 Jan)
The Banshees of Inisherin (05 Jan)
FCK 2020 - Zweieinhalb Jahre mit Scooter (12 Jan)
Holy Spider (12 Jan)
Babylon - Rausch der Ekstase (Babylon) (19 Jan)
Rache auf Texanisch (Vengeance) (19 Jan)
Seaside Special (19 Jan)
Shotgun Wedding (19 Jan)
Close (26 Jan)
Till - Kampf um die Wahrheit (Till) (26 Jan)
The theaters below show films in their original language; click on the links for showtimes and ticket information.
Abaton-Kino (Hamburg)
Savoy (Hamburg)
Zeise Kino (Hamburg)
Interviews with the stars, general film articles, and reports on press conferences and film festivals.
Behind the Scenes Interviews
Austin Film Festival: 2018
Bentonville Film Festival: 2021
Internationale Filmfestspiele Berlin: 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004
BFI London Film Festival: 2021, 2020, 2019, 2018, 2017, 2016
Bonn International Silent Film Festival: 2017
Boulder International Film Festival: 2019
Denver Film Festival: 2021
dokumentarfilmwoche hamburg: 2022
Festival de Cannes: 2006, 2005
Filmfest Hamburg: 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004
Franzoesisches Filmtage Hamburg: 2018
GoEast Filmfestival: 2022
HollyShorts Film Festival: 2022
Internationales KurzFilmFestival Hamburg: 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2007, 2005
Jewish Film Festival Berlin & Brandenburg: 2020
Michel Kinderfest Hamburg: 2012
Rüsselsheimer Filmtage: 2017
Seattle International Film Festival: 2019, 2008
Slamdance Film Festival: 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013
Sundance Film Festival: 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007
Traverse City Film Festival: 2012
Tribeca Film Festival: 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2009, 2008
Subscribe to the free KinoCritics monthly email newsletter here.


text:
// Copyright (c) 2014. All rights reserved.

#include "stringprintf.h"
#include "mcon/types.h"
#include "mcon/parse.h"
#include "mcon/manager.h"
#include "ext_mongo.h"
#include "io_stream.h"
#include "log.h"

namespace HPHP {

const StaticString
    s_Mongo("Mongo"),
    s_manager("__manager"),
    s_servers("__servers");

//////////////////////////////////////////////////////////////////////////////
// class Mongo

static bool HHVM_METHOD(Mongo, connectUtil) {
  throw_not_implemented("Mongo::connectUtil");
}

static int64_t HHVM_STATIC_METHOD(Mongo, getPoolSize) {
  throw_not_implemented("Mongo::getPoolSize");
}

static String HHVM_METHOD(Mongo, getSlave) {
  throw_not_implemented("Mongo::getSlave");
}

static bool HHVM_METHOD(Mongo, getSlaveOkay) {
  throw_not_implemented("Mongo::getSlaveOkay");
}

static Array HHVM_METHOD(Mongo, poolDebug) {
  throw_not_implemented("Mongo::poolDebug");
}

static bool HHVM_STATIC_METHOD(Mongo, setPoolSize, int64_t size) {
  throw_not_implemented("Mongo::setPoolSize");
}

static bool HHVM_METHOD(Mongo, setSlaveOkay, bool ok) {
  throw_not_implemented("Mongo::setSlaveOkay");
}

static String HHVM_METHOD(Mongo, switchSlave) {
  throw_not_implemented("Mongo::switchSlave");
}

const StaticString s_MongoBinData("MongoBinData");
//////////////////////////////////////////////////////////////////////////////
// class MongoBinData

static void HHVM_METHOD(MongoBinData, __construct, const String& data, int64_t type) {
  throw_not_implemented("MongoBinData::__construct");
}

static String HHVM_METHOD(MongoBinData, __toString) {
  throw_not_implemented("MongoBinData::__toString");
}

const StaticString s_MongoClient("MongoClient");
//////////////////////////////////////////////////////////////////////////////
// class MongoClient

/* {{{ Helper for connecting the servers */
mongo_connection *php_mongo_connect(mongo_con_manager *manager,
                                    mongo_servers *servers,
                                    int flags)
{
    mongo_connection *con;
    char *error_message = NULL;

    /* We don't care about the result so although we assign it to a var, we
     * only do that to handle errors and return it so that the calling function
     * knows whether a connection could be obtained or not. */
    con = mongo_get_read_write_connection(manager, servers, flags, (char **)&error_message);
    if (con) {
        return con;
    }

    if (error_message) {
        Array* params = new Array();
        params->append(Variant(71));
        params->append(Variant(String(error_message)));
        free(error_message);
        Object e = create_object("MongoConnectionException", *params, true);
        throw e;
    } else {
        Array* params = new Array();
        params->append(Variant(72));
        params->append(Variant(String("Unknown error obtaining connection")));
        free(error_message);
        Object e = create_object("MongoConnectionException", *params, true);
        throw e;
    }
    return NULL;
}
/* }}} */

/* {{{ Helper for special options, that can't be represented by a simple key
 * value pair, or options that are not actually connection string options. */
int mongo_store_option_wrapper(mongo_con_manager *manager,
                               mongo_servers *servers,
                               String option_name,
                               Variant option_value,
                               char **error_message)
{
    /* Special cases:
     *  - "connect" isn't supported by the URL parsing
     *  - "readPreferenceTags" is an array of tagsets we need to iterate over
     */
    if (option_name == String("connect")) {
        return 4;
    }
    if (option_name == String("readPreferenceTags")) {
        int            error = 0;

        for (ArrayIter iter(option_value.toArray()); iter; ++iter) {
            Variant opt_entry = iter.second();
            Variant opt_key = iter.first();

            error = mongo_store_option(manager, servers, option_name.c_str(), opt_entry.toString().c_str(), error_message);
            if (error) {
                return error;
            }
        }
        return error;
    }

    return mongo_store_option(manager, servers, option_name.c_str(), option_value.toString().c_str(), error_message);
}
/* }}} */

static void HHVM_METHOD(MongoClient, __construct,
                        const String& server,
                        const Array& options,
                        const Array& driver_options)
{
    bool connect;
    int error;
    char *error_message = NULL;

    /* Set the manager from the global manager */
    mongo_con_manager *manager = s_mongo_extension.manager_;

    /* Parse the server specification
     * Default to the mongo.default_host & mongo.default_port INI options */
    mongo_servers *servers = mongo_parse_init();
    if (!server.empty()) {
        error = mongo_parse_server_spec(manager, servers, server.c_str(), (char **)&error_message);
        if (error) {
            Array* params = new Array();
            params->append(Variant(20 + error));
            params->append(Variant(String(error_message)));
            free(error_message);
            Object e = create_object("MongoConnectionException", *params, true);
            throw e;
        }
    } else {
        std::string tmp;

        tmp = StringPrintf("%s:%ld", s_mongo_extension.default_host_, s_mongo_extension.default_port_);
        error = mongo_parse_server_spec(manager, servers, tmp.c_str(), (char **)&error_message);

        if (error) {
            Array* params = new Array();
            params->append(Variant(0));
            params->append(Variant(String(error_message)));
            free(error_message);
            Object e = create_object("MongoConnectionException", *params, true);
            throw e;
        }
    }

    /* If "w" was *not* set as an option, then assign the default */
    if (servers->options.default_w == -1 && servers->options.default_wstring == NULL) {
        /* Default to WriteConcern=1 for MongoClient */
        servers->options.default_w = 1;
    }

    /* Options through array */
    for (ArrayIter iter(options); iter; ++iter) {
        Variant opt_entry = iter.second();
        Variant opt_key = iter.first();

        switch (opt_key.getType()) {
        case KindOfString:
        case KindOfStaticString: {
            int error_code = 0;

            error_code = mongo_store_option_wrapper(manager, servers, opt_key.toString(), opt_entry, (char **)&error_message);

            switch (error_code) {
            case -1: /* Deprecated options */
                if (opt_key.toString() == String("slaveOkay")) {
                    raise_deprecated("The 'slaveOkay' option is deprecated. Please switch to read-preferences");
                } else if (opt_key.toString() == String("timeout")) {
                    raise_deprecated("The 'timeout' option is deprecated. Please use 'connectTimeoutMS' instead");
                }
                break;
            case 4: /* Special options parameters, invalid for URL parsing - only possiblity is 'connect' for now */
                if (opt_key.toString() == String("connect")) {
                    connect = opt_entry.toBoolean();
                }
                break;

            case 3: /* Logical error (i.e. conflicting options) */
            case 2: /* Unknown connection string option */
            case 1: /* Empty option name or value */
                /* Throw exception - error code is 20 + above value. They are defined in php_mongo.h */
                Array* params = new Array();
                params->append(Variant(20 + error_code));
                params->append(Variant(String(error_message)));
                free(error_message);
                Object e = create_object("MongoConnectionException", *params, true);
                throw e;
            }
        } break;
        case KindOfInt64: {
            /* Throw exception - error code is 25. This is defined in php_mongo.h */
            Array* params = new Array();
            params->append(Variant(25));
            params->append(Variant(String("Unrecognized or unsupported option")));
            Object e = create_object("MongoConnectionException", *params, true);
            throw e;
        } break;
        default:
            break;
        }
    }

    {
        // TODO(stream_context)
    }

    // TODO

    if (connect) {
        /* Make sure we clear any exceptions thrown if have any usable connection */
        if (php_mongo_connect(manager, servers, MONGO_CON_FLAG_READ|MONGO_CON_FLAG_DONT_FILTER)) {
            //zend_clear_exception(TSRMLS_C);
        }
    }

    this_->o_set(s_manager, manager, s_MongoClient.get());
    this_->o_set(s_servers, servers, s_MongoClient.get());
}

static bool HHVM_METHOD(MongoClient, close, const Object& connection) {
  throw_not_implemented("MongoClient::close");
}

static bool HHVM_METHOD(MongoClient, connect) {
  throw_not_implemented("MongoClient::connect");
}

static Array HHVM_METHOD(MongoClient, dropDB, const Variant& db) {
  throw_not_implemented("MongoClient::dropDB");
}

static Object HHVM_METHOD(MongoClient, __get, const String& dbname) {
  throw_not_implemented("MongoClient::__get");
}

static Array HHVM_STATIC_METHOD(MongoClient, getConnections) {
  throw_not_implemented("MongoClient::getConnections");
}

static Array HHVM_METHOD(MongoClient, getHosts) {
  throw_not_implemented("MongoClient::getHosts");
}

static Array HHVM_METHOD(MongoClient, getReadPreference) {
  throw_not_implemented("MongoClient::getReadPreference");
}

static Array HHVM_METHOD(MongoClient, getWriteConcern) {
  throw_not_implemented("MongoClient::getWriteConcern");
}

static bool HHVM_METHOD(MongoClient, killCursor, const String& server_hash, const Object& id) {
  throw_not_implemented("MongoClient::killCursor");
}

static Array HHVM_METHOD(MongoClient, listDBs) {
  throw_not_implemented("MongoClient::listDBs");
}

static Object HHVM_METHOD(MongoClient, selectCollection, const String& db, const String& collection) {
  throw_not_implemented("MongoClient::selectCollection");
}

static Object HHVM_METHOD(MongoClient, selectDB, const String& name) {
  throw_not_implemented("MongoClient::selectDB");
}

static bool HHVM_METHOD(MongoClient, setReadPreference, const String& read_preference, const Array& tags) {
  throw_not_implemented("MongoClient::setReadPreference");
}

static bool HHVM_METHOD(MongoClient, setWriteConcern, const Variant& w, int64_t wtimeout) {
  throw_not_implemented("MongoClient::setWriteConcern");
}

static String HHVM_METHOD(MongoClient, __toString) {
  throw_not_implemented("MongoClient::__toString");
}

const StaticString s_MongoCode("MongoCode");
//////////////////////////////////////////////////////////////////////////////
// class MongoCode

static void HHVM_METHOD(MongoCode, __construct, const String& code, const Array& scope) {
  throw_not_implemented("MongoCode::__construct");
}

static String HHVM_METHOD(MongoCode, __toString) {
  throw_not_implemented("MongoCode::__toString");
}

const StaticString s_MongoCollection("MongoCollection");
//////////////////////////////////////////////////////////////////////////////
// class MongoCollection

static Array HHVM_METHOD(MongoCollection, aggregate, const Array& op, const Array& ...) {
  throw_not_implemented("MongoCollection::aggregate");
}

static Object HHVM_METHOD(MongoCollection, aggregateCursor, const Array& command, const Array& options) {
  throw_not_implemented("MongoCollection::aggregateCursor");
}

static Variant HHVM_METHOD(MongoCollection, batchInsert, const Array& a, const Array& options) {
  throw_not_implemented("MongoCollection::batchInsert");
}

static void HHVM_METHOD(MongoCollection, __construct, const Object& db, const String& name) {
  throw_not_implemented("MongoCollection::__construct");
}

static int64_t HHVM_METHOD(MongoCollection, count, const Array& query, int64_t limit, int64_t skip) {
  throw_not_implemented("MongoCollection::count");
}

static Array HHVM_METHOD(MongoCollection, createDBRef, const Variant& document_or_id) {
  throw_not_implemented("MongoCollection::createDBRef");
}

static bool HHVM_METHOD(MongoCollection, createIndex, const Array& keys, const Array& options) {
  throw_not_implemented("MongoCollection::createIndex");
}

static Array HHVM_METHOD(MongoCollection, deleteIndex, const Object& keys) {
  throw_not_implemented("MongoCollection::deleteIndex");
}

static Array HHVM_METHOD(MongoCollection, deleteIndexes) {
  throw_not_implemented("MongoCollection::deleteIndexes");
}

static Array HHVM_METHOD(MongoCollection, distinct, const String& key, const Array& query) {
  throw_not_implemented("MongoCollection::distinct");
}

static Array HHVM_METHOD(MongoCollection, drop) {
  throw_not_implemented("MongoCollection::drop");
}

//static bool HHVM_METHOD(MongoCollection, ensureIndex, const Object& key|keys, const Array& options) {
static bool HHVM_METHOD(MongoCollection, ensureIndex, const Variant& key, const Array& options) {
  throw_not_implemented("MongoCollection::ensureIndex");
}

static Object HHVM_METHOD(MongoCollection, find, const Array& query, const Array& fields) {
  throw_not_implemented("MongoCollection::find");
}

static Array HHVM_METHOD(MongoCollection, findAndModify, const Array& query, const Array& update, const Array& fields, const Array& options) {
  throw_not_implemented("MongoCollection::findAndModify");
}

static Array HHVM_METHOD(MongoCollection, findOne, const Array& query, const Array& fields, const Array& options) {
  throw_not_implemented("MongoCollection::findOne");
}

static Object HHVM_METHOD(MongoCollection, __get, const String& name) {
  throw_not_implemented("MongoCollection::__get");
}

static Array HHVM_METHOD(MongoCollection, getDBRef, const Array& ref) {
  throw_not_implemented("MongoCollection::getDBRef");
}

static Array HHVM_METHOD(MongoCollection, getIndexInfo) {
  throw_not_implemented("MongoCollection::getIndexInfo");
}

static String HHVM_METHOD(MongoCollection, getName) {
  throw_not_implemented("MongoCollection::getName");
}

static Array HHVM_METHOD(MongoCollection, getReadPreference) {
  throw_not_implemented("MongoCollection::getReadPreference");
}

static bool HHVM_METHOD(MongoCollection, getSlaveOkay) {
  throw_not_implemented("MongoCollection::getSlaveOkay");
}

static Array HHVM_METHOD(MongoCollection, getWriteConcern) {
  throw_not_implemented("MongoCollection::getWriteConcern");
}

static Array HHVM_METHOD(MongoCollection, group, const Variant& keys, const Array& initial, const Object& reduce, const Array& options) {
  throw_not_implemented("MongoCollection::group");
}

static Object HHVM_METHOD(MongoCollection, insert, const Object& a, const Array& options) {
  throw_not_implemented("MongoCollection::insert");
}

static Object HHVM_METHOD(MongoCollection, parallelCollectionScan, int64_t num_cursors) {
  throw_not_implemented("MongoCollection::parallelCollectionScan");
}

static Object HHVM_METHOD(MongoCollection, remove, const Array& criteria, const Array& options) {
  throw_not_implemented("MongoCollection::remove");
}

static Variant HHVM_METHOD(MongoCollection, save, const Object& a, const Array& options) {
  throw_not_implemented("MongoCollection::save");
}

static bool HHVM_METHOD(MongoCollection, setReadPreference, const String& read_preference, const Array& tags) {
  throw_not_implemented("MongoCollection::setReadPreference");
}

static bool HHVM_METHOD(MongoCollection, setSlaveOkay, bool ok) {
  throw_not_implemented("MongoCollection::setSlaveOkay");
}

static bool HHVM_METHOD(MongoCollection, setWriteConcern, const Variant& w, int64_t wtimeout) {
  throw_not_implemented("MongoCollection::setWriteConcern");
}

static String HHVM_METHOD(MongoCollection, toIndexString, const Variant& keys) {
  throw_not_implemented("MongoCollection::toIndexString");
}

static String HHVM_METHOD(MongoCollection, __toString) {
  throw_not_implemented("MongoCollection::__toString");
}

static Object HHVM_METHOD(MongoCollection, update, const Array& criteria, const Array& new_object, const Array& options) {
  throw_not_implemented("MongoCollection::update");
}

static Array HHVM_METHOD(MongoCollection, validate, bool scan_data) {
  throw_not_implemented("MongoCollection::validate");
}

const StaticString s_MongoCommandCursor("MongoCommandCursor");
//////////////////////////////////////////////////////////////////////////////
// class MongoCommandCursor

static Object HHVM_METHOD(MongoCommandCursor, batchSize, int64_t batchSize) {
  throw_not_implemented("MongoCommandCursor::batchSize");
}

static void HHVM_METHOD(MongoCommandCursor, __construct, const Object& connection, const String& ns, const Array& command) {
  throw_not_implemented("MongoCommandCursor::__construct");
}

static void HHVM_METHOD(MongoCommandCursor, createFromDocument, const Object& connection, const String& hash, const Array& document) {
  throw_not_implemented("MongoCommandCursor::createFromDocument");
}

static Array HHVM_METHOD(MongoCommandCursor, current) {
  throw_not_implemented("MongoCommandCursor::current");
}

static bool HHVM_METHOD(MongoCommandCursor, dead) {
  throw_not_implemented("MongoCommandCursor::dead");
}

static Array HHVM_METHOD(MongoCommandCursor, info) {
  throw_not_implemented("MongoCommandCursor::info");
}

static String HHVM_METHOD(MongoCommandCursor, key) {
  throw_not_implemented("MongoCommandCursor::key");
}

static void HHVM_METHOD(MongoCommandCursor, next) {
  throw_not_implemented("MongoCommandCursor::next");
}

static Array HHVM_METHOD(MongoCommandCursor, rewind) {
  throw_not_implemented("MongoCommandCursor::rewind");
}

static bool HHVM_METHOD(MongoCommandCursor, valid) {
  throw_not_implemented("MongoCommandCursor::valid");
}

const StaticString s_MongoConnectionException("MongoConnectionException");
const StaticString s_MongoCursor("MongoCursor");
//////////////////////////////////////////////////////////////////////////////
// class MongoCursor

static Object HHVM_METHOD(MongoCursor, addOption, const String& key, const Variant& value) {
  throw_not_implemented("MongoCursor::addOption");
}

static Object HHVM_METHOD(MongoCursor, awaitData, bool wait) {
  throw_not_implemented("MongoCursor::awaitData");
}

static Object HHVM_METHOD(MongoCursor, batchSize, int64_t batchSize) {
  throw_not_implemented("MongoCursor::batchSize");
}

static void HHVM_METHOD(MongoCursor, __construct, const Object& connection, const String& ns, const Array& query, const Array& fields) {
  throw_not_implemented("MongoCursor::__construct");
}

static int64_t HHVM_METHOD(MongoCursor, count, bool foundOnly) {
  throw_not_implemented("MongoCursor::count");
}

static Array HHVM_METHOD(MongoCursor, current) {
  throw_not_implemented("MongoCursor::current");
}

static bool HHVM_METHOD(MongoCursor, dead) {
  throw_not_implemented("MongoCursor::dead");
}

static void HHVM_METHOD(MongoCursor, doQuery) {
  throw_not_implemented("MongoCursor::doQuery");
}

static Array HHVM_METHOD(MongoCursor, explain) {
  throw_not_implemented("MongoCursor::explain");
}

static Object HHVM_METHOD(MongoCursor, fields, const Array& f) {
  throw_not_implemented("MongoCursor::fields");
}

static Array HHVM_METHOD(MongoCursor, getNext) {
  throw_not_implemented("MongoCursor::getNext");
}

static Array HHVM_METHOD(MongoCursor, getReadPreference) {
  throw_not_implemented("MongoCursor::getReadPreference");
}

static bool HHVM_METHOD(MongoCursor, hasNext) {
  throw_not_implemented("MongoCursor::hasNext");
}

static Object HHVM_METHOD(MongoCursor, hint, const Variant& index) {
  throw_not_implemented("MongoCursor::hint");
}

static Object HHVM_METHOD(MongoCursor, immortal, bool liveForever) {
  throw_not_implemented("MongoCursor::immortal");
}

static Array HHVM_METHOD(MongoCursor, info) {
  throw_not_implemented("MongoCursor::info");
}

static String HHVM_METHOD(MongoCursor, key) {
  throw_not_implemented("MongoCursor::key");
}

static Object HHVM_METHOD(MongoCursor, limit, int64_t num) {
  throw_not_implemented("MongoCursor::limit");
}

static Object HHVM_METHOD(MongoCursor, maxTimeMS, int64_t ms) {
  throw_not_implemented("MongoCursor::maxTimeMS");
}

static void HHVM_METHOD(MongoCursor, next) {
  throw_not_implemented("MongoCursor::next");
}

static Object HHVM_METHOD(MongoCursor, partial, bool okay) {
  throw_not_implemented("MongoCursor::partial");
}

static void HHVM_METHOD(MongoCursor, reset) {
  throw_not_implemented("MongoCursor::reset");
}

static void HHVM_METHOD(MongoCursor, rewind) {
  throw_not_implemented("MongoCursor::rewind");
}

static Object HHVM_METHOD(MongoCursor, setFlag, int64_t flag, bool set) {
  throw_not_implemented("MongoCursor::setFlag");
}

static Object HHVM_METHOD(MongoCursor, setReadPreference, const String& read_preference, const Array& tags) {
  throw_not_implemented("MongoCursor::setReadPreference");
}

static Object HHVM_METHOD(MongoCursor, skip, int64_t num) {
  throw_not_implemented("MongoCursor::skip");
}

static Object HHVM_METHOD(MongoCursor, slaveOkay, bool okay) {
  throw_not_implemented("MongoCursor::slaveOkay");
}

static Object HHVM_METHOD(MongoCursor, snapshot) {
  throw_not_implemented("MongoCursor::snapshot");
}

static Object HHVM_METHOD(MongoCursor, sort, const Array& fields) {
  throw_not_implemented("MongoCursor::sort");
}

static Object HHVM_METHOD(MongoCursor, tailable, bool tail) {
  throw_not_implemented("MongoCursor::tailable");
}

static Object HHVM_METHOD(MongoCursor, timeout, int64_t ms) {
  throw_not_implemented("MongoCursor::timeout");
}

static bool HHVM_METHOD(MongoCursor, valid) {
  throw_not_implemented("MongoCursor::valid");
}

const StaticString s_MongoCursorException("MongoCursorException");
//////////////////////////////////////////////////////////////////////////////
// class MongoCursorException

static String HHVM_METHOD(MongoCursorException, getHost) {
  throw_not_implemented("MongoCursorException::getHost");
}

const StaticString s_MongoCursorTimeoutException("MongoCursorTimeoutException");
const StaticString s_MongoDate("MongoDate");
//////////////////////////////////////////////////////////////////////////////
// class MongoDate

static void HHVM_METHOD(MongoDate, __construct, int64_t sec, int64_t usec) {
  throw_not_implemented("MongoDate::__construct");
}

static String HHVM_METHOD(MongoDate, __toString) {
  throw_not_implemented("MongoDate::__toString");
}

const StaticString s_MongoDB("MongoDB");
//////////////////////////////////////////////////////////////////////////////
// class MongoDB

static Array HHVM_METHOD(MongoDB, authenticate, const String& username, const String& password) {
  throw_not_implemented("MongoDB::authenticate");
}

static Array HHVM_METHOD(MongoDB, command, const Array& command, const Array& options) {
  throw_not_implemented("MongoDB::command");
}

static void HHVM_METHOD(MongoDB, __construct, const Object& conn, const String& name) {
  throw_not_implemented("MongoDB::__construct");
}

static Object HHVM_METHOD(MongoDB, createCollection, const String& name, const Array& options) {
  throw_not_implemented("MongoDB::createCollection");
}

static Array HHVM_METHOD(MongoDB, createDBRef, const String& collection, const Variant& document_or_id) {
  throw_not_implemented("MongoDB::createDBRef");
}

static Array HHVM_METHOD(MongoDB, drop) {
  throw_not_implemented("MongoDB::drop");
}

static Array HHVM_METHOD(MongoDB, dropCollection, const Variant& coll) {
  throw_not_implemented("MongoDB::dropCollection");
}

static Array HHVM_METHOD(MongoDB, execute, const Variant& code, const Array& args) {
  throw_not_implemented("MongoDB::execute");
}

static bool HHVM_METHOD(MongoDB, forceError) {
  throw_not_implemented("MongoDB::forceError");
}

static Object HHVM_METHOD(MongoDB, __get, const String& name) {
  throw_not_implemented("MongoDB::__get");
}

static Array HHVM_METHOD(MongoDB, getCollectionNames, bool includeSystemCollections) {
  throw_not_implemented("MongoDB::getCollectionNames");
}

static Array HHVM_METHOD(MongoDB, getDBRef, const Array& ref) {
  throw_not_implemented("MongoDB::getDBRef");
}

static Object HHVM_METHOD(MongoDB, getGridFS, const String& prefix) {
  throw_not_implemented("MongoDB::getGridFS");
}

static int64_t HHVM_METHOD(MongoDB, getProfilingLevel) {
  throw_not_implemented("MongoDB::getProfilingLevel");
}

static Array HHVM_METHOD(MongoDB, getReadPreference) {
  throw_not_implemented("MongoDB::getReadPreference");
}

static bool HHVM_METHOD(MongoDB, getSlaveOkay) {
  throw_not_implemented("MongoDB::getSlaveOkay");
}

static Array HHVM_METHOD(MongoDB, getWriteConcern) {
  throw_not_implemented("MongoDB::getWriteConcern");
}

static Array HHVM_METHOD(MongoDB, lastError) {
  throw_not_implemented("MongoDB::lastError");
}

static Array HHVM_METHOD(MongoDB, listCollections, bool includeSystemCollections) {
  throw_not_implemented("MongoDB::listCollections");
}

static Array HHVM_METHOD(MongoDB, prevError) {
  throw_not_implemented("MongoDB::prevError");
}

static Array HHVM_METHOD(MongoDB, repair, bool preserve_cloned_files, bool backup_original_files) {
  throw_not_implemented("MongoDB::repair");
}

static Array HHVM_METHOD(MongoDB, resetError) {
  throw_not_implemented("MongoDB::resetError");
}

static Object HHVM_METHOD(MongoDB, selectCollection, const String& name) {
  throw_not_implemented("MongoDB::selectCollection");
}

static int64_t HHVM_METHOD(MongoDB, setProfilingLevel, int64_t level) {
  throw_not_implemented("MongoDB::setProfilingLevel");
}

static bool HHVM_METHOD(MongoDB, setReadPreference, const String& read_preference, const Array& tags) {
  throw_not_implemented("MongoDB::setReadPreference");
}

static bool HHVM_METHOD(MongoDB, setSlaveOkay, bool ok) {
  throw_not_implemented("MongoDB::setSlaveOkay");
}

static bool HHVM_METHOD(MongoDB, setWriteConcern, const Variant& w, int64_t wtimeout) {
  throw_not_implemented("MongoDB::setWriteConcern");
}

static String HHVM_METHOD(MongoDB, __toString) {
  throw_not_implemented("MongoDB::__toString");
}

const StaticString s_MongoDBRef("MongoDBRef");
//////////////////////////////////////////////////////////////////////////////
// class MongoDBRef

static Array HHVM_STATIC_METHOD(MongoDBRef, create, const String& collection, const Variant& id, const String& database) {
  throw_not_implemented("MongoDBRef::create");
}

static Array HHVM_STATIC_METHOD(MongoDBRef, get, const Object& db, const Array& ref) {
  throw_not_implemented("MongoDBRef::get");
}

static bool HHVM_STATIC_METHOD(MongoDBRef, isRef, const Variant& ref) {
  throw_not_implemented("MongoDBRef::isRef");
}

const StaticString s_MongoDeleteBatch("MongoDeleteBatch");
//////////////////////////////////////////////////////////////////////////////
// class MongoDeleteBatch

static void HHVM_METHOD(MongoDeleteBatch, __construct, const Object& collection, const Array& write_options) {
  throw_not_implemented("MongoDeleteBatch::__construct");
}

const StaticString s_MongoDuplicateKeyException("MongoDuplicateKeyException");
const StaticString s_MongoException("MongoException");
const StaticString s_MongoExecutionTimeoutException("MongoExecutionTimeoutException");
const StaticString s_MongoGridFS("MongoGridFS");
//////////////////////////////////////////////////////////////////////////////
// class MongoGridFS

static void HHVM_METHOD(MongoGridFS, __construct, const Object& db, const String& prefix, const Variant& chunks) {
  throw_not_implemented("MongoGridFS::__construct");
}

static Object HHVM_METHOD(MongoGridFS, delete, const Variant& id) {
  throw_not_implemented("MongoGridFS::delete");
}

static Array HHVM_METHOD(MongoGridFS, drop) {
  throw_not_implemented("MongoGridFS::drop");
}

static Object HHVM_METHOD(MongoGridFS, find, const Array& query, const Array& fields) {
  throw_not_implemented("MongoGridFS::find");
}

static Object HHVM_METHOD(MongoGridFS, findOne, const Variant& query, const Variant& fields) {
  throw_not_implemented("MongoGridFS::findOne");
}

static Object HHVM_METHOD(MongoGridFS, get, const Variant& id) {
  throw_not_implemented("MongoGridFS::get");
}

static Variant HHVM_METHOD(MongoGridFS, put, const String& filename, const Array& metadata, const Array& options) {
  throw_not_implemented("MongoGridFS::put");
}

static Object HHVM_METHOD(MongoGridFS, remove, const Array& criteria, const Array& options) {
  throw_not_implemented("MongoGridFS::remove");
}

static Variant HHVM_METHOD(MongoGridFS, storeBytes, const String& bytes, const Array& metadata, const Array& options) {
  throw_not_implemented("MongoGridFS::storeBytes");
}

static Variant HHVM_METHOD(MongoGridFS, storeFile, const String& filename, const Array& metadata, const Array& options) {
  throw_not_implemented("MongoGridFS::storeFile");
}

static Variant HHVM_METHOD(MongoGridFS, storeUpload, const String& name, const Array& metadata) {
  throw_not_implemented("MongoGridFS::storeUpload");
}

const StaticString s_MongoGridFSCursor("MongoGridFSCursor");
//////////////////////////////////////////////////////////////////////////////
// class MongoGridFSCursor

static void HHVM_METHOD(MongoGridFSCursor, __construct, const Object& gridfs, const Resource& connection, const String& ns, const Array& query, const Array& fields) {
  throw_not_implemented("MongoGridFSCursor::__construct");
}

static Object HHVM_METHOD(MongoGridFSCursor, current) {
  throw_not_implemented("MongoGridFSCursor::current");
}

static Object HHVM_METHOD(MongoGridFSCursor, getNext) {
  throw_not_implemented("MongoGridFSCursor::getNext");
}

static String HHVM_METHOD(MongoGridFSCursor, key) {
  throw_not_implemented("MongoGridFSCursor::key");
}

const StaticString s_MongoGridFSException("MongoGridFSException");
const StaticString s_MongoGridFSFile("MongoGridFSFile");
//////////////////////////////////////////////////////////////////////////////
// class MongoGridFSFile

static void HHVM_METHOD(MongoGridfsFile, __construct, const Object& gridfs, const Array& file) {
  throw_not_implemented("MongoGridfsFile::__construct");
}

static String HHVM_METHOD(MongoGridFSFile, getBytes) {
  throw_not_implemented("MongoGridFSFile::getBytes");
}

static String HHVM_METHOD(MongoGridFSFile, getFilename) {
  throw_not_implemented("MongoGridFSFile::getFilename");
}

static Object HHVM_METHOD(MongoGridFSFile, getResource) {
  throw_not_implemented("MongoGridFSFile::getResource");
}

static int64_t HHVM_METHOD(MongoGridFSFile, getSize) {
  throw_not_implemented("MongoGridFSFile::getSize");
}

static int64_t HHVM_METHOD(MongoGridFSFile, write, const String& filename) {
  throw_not_implemented("MongoGridFSFile::write");
}

const StaticString s_MongoId("MongoId");
//////////////////////////////////////////////////////////////////////////////
// class MongoId

static void HHVM_METHOD(MongoId, __construct, const String& id) {
  throw_not_implemented("MongoId::__construct");
}

static String HHVM_STATIC_METHOD(MongoId, getHostname) {
  throw_not_implemented("MongoId::getHostname");
}

static int64_t HHVM_METHOD(MongoId, getInc) {
  throw_not_implemented("MongoId::getInc");
}

static int64_t HHVM_METHOD(MongoId, getPID) {
  throw_not_implemented("MongoId::getPID");
}

static int64_t HHVM_METHOD(MongoId, getTimestamp) {
  throw_not_implemented("MongoId::getTimestamp");
}

static bool HHVM_STATIC_METHOD(MongoId, isValid, const Variant& value) {
  throw_not_implemented("MongoId::isValid");
}

static Object HHVM_STATIC_METHOD(MongoId, __set_state, const Array& props) {
  throw_not_implemented("MongoId::__set_state");
}

static String HHVM_METHOD(MongoId, __toString) {
  throw_not_implemented("MongoId::__toString");
}

const StaticString s_MongoInsertBatch("MongoInsertBatch");
//////////////////////////////////////////////////////////////////////////////
// class MongoInsertBatch

static void HHVM_METHOD(MongoInsertBatch, __construct, const Object& collection, const Array& write_options) {
  throw_not_implemented("MongoInsertBatch::__construct");
}

const StaticString s_MongoInt32("MongoInt32");
//////////////////////////////////////////////////////////////////////////////
// class MongoInt32

static void HHVM_METHOD(MongoInt32, __construct, const String& value) {
  throw_not_implemented("MongoInt32::__construct");
}

static String HHVM_METHOD(MongoInt32, __toString) {
  throw_not_implemented("MongoInt32::__toString");
}

const StaticString s_MongoInt64("MongoInt64");
//////////////////////////////////////////////////////////////////////////////
// class MongoInt64

static void HHVM_METHOD(MongoInt64, __construct, const String& value) {
  throw_not_implemented("MongoInt64::__construct");
}

static String HHVM_METHOD(MongoInt64, __toString) {
  throw_not_implemented("MongoInt64::__toString");
}

const StaticString s_MongoLog("MongoLog");
//////////////////////////////////////////////////////////////////////////////
// class MongoLog

static Object HHVM_STATIC_METHOD(MongoLog, getCallback) {
  throw_not_implemented("MongoLog::getCallback");
}

static int64_t HHVM_STATIC_METHOD(MongoLog, getLevel) {
  throw_not_implemented("MongoLog::getLevel");
}

static int64_t HHVM_STATIC_METHOD(MongoLog, getModule) {
  throw_not_implemented("MongoLog::getModule");
}

static void HHVM_STATIC_METHOD(MongoLog, setCallback, const Object& log_function) {
  throw_not_implemented("MongoLog::setCallback");
}

static void HHVM_STATIC_METHOD(MongoLog, setLevel, int64_t level) {
  throw_not_implemented("MongoLog::setLevel");
}

static void HHVM_STATIC_METHOD(MongoLog, setModule, int64_t module) {
  throw_not_implemented("MongoLog::setModule");
}

const StaticString s_MongoMaxKey("MongoMaxKey");
const StaticString s_MongoMinKey("MongoMinKey");
const StaticString s_MongoPool("MongoPool");
//////////////////////////////////////////////////////////////////////////////
// class MongoPool

static int64_t HHVM_STATIC_METHOD(MongoPool, getSize) {
  throw_not_implemented("MongoPool::getSize");
}

static Array HHVM_METHOD(MongoPool, info) {
  throw_not_implemented("MongoPool::info");
}

static bool HHVM_STATIC_METHOD(MongoPool, setSize, int64_t size) {
  throw_not_implemented("MongoPool::setSize");
}

const StaticString s_MongoProtocolException("MongoProtocolException");
const StaticString s_MongoRegex("MongoRegex");
//////////////////////////////////////////////////////////////////////////////
// class MongoRegex

static void HHVM_METHOD(MongoRegex, __construct, const String& regex) {
  throw_not_implemented("MongoRegex::__construct");
}

static String HHVM_METHOD(MongoRegex, __toString) {
  throw_not_implemented("MongoRegex::__toString");
}

const StaticString s_MongoResultException("MongoResultException");
//////////////////////////////////////////////////////////////////////////////
// class MongoResultException

static Array HHVM_METHOD(MongoResultException, getDocument) {
  throw_not_implemented("MongoResultException::getDocument");
}

const StaticString s_MongoTimestamp("MongoTimestamp");
//////////////////////////////////////////////////////////////////////////////
// class MongoTimestamp

static void HHVM_METHOD(MongoTimestamp, __construct, int64_t sec, int64_t inc) {
  throw_not_implemented("MongoTimestamp::__construct");
}

static String HHVM_METHOD(MongoTimestamp, __toString) {
  throw_not_implemented("MongoTimestamp::__toString");
}

const StaticString s_MongoUpdateBatch("MongoUpdateBatch");
//////////////////////////////////////////////////////////////////////////////
// class MongoUpdateBatch

static void HHVM_METHOD(MongoUpdateBatch, __construct, const Object& collection, const Array& write_options) {
  throw_not_implemented("MongoUpdateBatch::__construct");
}

const StaticString s_MongoWriteBatch("MongoWriteBatch");
//////////////////////////////////////////////////////////////////////////////
// class MongoWriteBatch

static bool HHVM_METHOD(MongoWriteBatch, add, const Array& item) {
  throw_not_implemented("MongoWriteBatch::add");
}

static Array HHVM_METHOD(MongoWriteBatch, execute, const Array& write_options) {
  throw_not_implemented("MongoWriteBatch::execute");
}

const StaticString s_MongoWriteConcernException("MongoWriteConcernException");
//////////////////////////////////////////////////////////////////////////////
// class MongoWriteConcernException

static Array HHVM_METHOD(MongoWriteConcernException, getDocument) {
  throw_not_implemented("MongoWriteConcernException::getDocument");
}

//////////////////////////////////////////////////////////////////////////////
// functions

static void HHVM_FUNCTION(log_cmd_delete, const Array& server, const Array& writeOptions, const Array& deleteOptions, const Array& protocolOptions) {
  throw_not_implemented("log_cmd_delete");
}

static void HHVM_FUNCTION(log_cmd_insert, const Array& server, const Array& document, const Array& writeOptions, const Array& protocolOptions) {
  throw_not_implemented("log_cmd_insert");
}

static void HHVM_FUNCTION(log_cmd_update, const Array& server, const Array& writeOptions, const Array& updateOptions, const Array& protocolOptions) {
  throw_not_implemented("log_cmd_update");
}

static void HHVM_FUNCTION(log_getmore, const Array& server, const Array& info) {
  throw_not_implemented("log_getmore");
}

static void HHVM_FUNCTION(log_killcursor, const Array& server, const Array& info) {
  throw_not_implemented("log_killcursor");
}

static void HHVM_FUNCTION(log_reply, const Array& server, const Array& messageHeaders, const Array& operationHeaders) {
  throw_not_implemented("log_reply");
}

static void HHVM_FUNCTION(log_write_batch, const Array& server, const Array& writeOptions, const Array& batch, const Array& protocolOptions) {
  throw_not_implemented("log_write_batch");
}

static Array HHVM_FUNCTION(bson_decode, const String& bson) {
  throw_not_implemented("bson_decode");
}

static String HHVM_FUNCTION(bson_encode, const Variant& anything)
{
  throw_not_implemented("bson_encode");
}

void mongoExtension::moduleInit()
{
    default_host_ = "localhost";
    default_port_ = 27017;

    manager_ = mongo_init();
    //TSRMLS_SET_CTX(mongo_globals->manager->log_context);
    manager_->log_function = php_mcon_log_wrapper;

    manager_->connect               = php_mongo_io_stream_connect;
    manager_->recv_header           = php_mongo_io_stream_read;
    manager_->recv_data             = php_mongo_io_stream_read;
    manager_->send                  = php_mongo_io_stream_send;
    manager_->close                 = php_mongo_io_stream_close;
    manager_->forget                = php_mongo_io_stream_forget;
    manager_->authenticate          = php_mongo_io_stream_authenticate;
    //manager_->supports_wire_version = php_mongo_api_supports_wire_version;

    HHVM_ME(Mongo, connectUtil);
    HHVM_STATIC_ME(Mongo, getPoolSize);
    HHVM_ME(Mongo, getSlave);
    HHVM_ME(Mongo, getSlaveOkay);
    HHVM_ME(Mongo, poolDebug);
    HHVM_STATIC_ME(Mongo, setPoolSize);
    HHVM_ME(Mongo, setSlaveOkay);
    HHVM_ME(Mongo, switchSlave);
    HHVM_ME(MongoBinData, __construct);
    HHVM_ME(MongoBinData, __toString);

    HHVM_ME(MongoClient, __construct);
    HHVM_ME(MongoClient, close);
    HHVM_ME(MongoClient, connect);
    HHVM_ME(MongoClient, dropDB);
    HHVM_ME(MongoClient, __get);
    HHVM_STATIC_ME(MongoClient, getConnections);
    HHVM_ME(MongoClient, getHosts);
    HHVM_ME(MongoClient, getReadPreference);
    HHVM_ME(MongoClient, getWriteConcern);
    HHVM_ME(MongoClient, killCursor);
    HHVM_ME(MongoClient, listDBs);
    HHVM_ME(MongoClient, selectCollection);
    HHVM_ME(MongoClient, selectDB);
    HHVM_ME(MongoClient, setReadPreference);
    HHVM_ME(MongoClient, setWriteConcern);
    HHVM_ME(MongoClient, __toString);

    HHVM_ME(MongoCode, __construct);
    HHVM_ME(MongoCode, __toString);

    HHVM_ME(MongoCollection, aggregate);
    HHVM_ME(MongoCollection, aggregateCursor);
    HHVM_ME(MongoCollection, batchInsert);
    HHVM_ME(MongoCollection, __construct);
    HHVM_ME(MongoCollection, count);
    HHVM_ME(MongoCollection, createDBRef);
    HHVM_ME(MongoCollection, createIndex);
    HHVM_ME(MongoCollection, deleteIndex);
    HHVM_ME(MongoCollection, deleteIndexes);
    HHVM_ME(MongoCollection, distinct);
    HHVM_ME(MongoCollection, drop);
    HHVM_ME(MongoCollection, ensureIndex);
    HHVM_ME(MongoCollection, find);
    HHVM_ME(MongoCollection, findAndModify);
    HHVM_ME(MongoCollection, findOne);
    HHVM_ME(MongoCollection, __get);
    HHVM_ME(MongoCollection, getDBRef);
    HHVM_ME(MongoCollection, getIndexInfo);
    HHVM_ME(MongoCollection, getName);
    HHVM_ME(MongoCollection, getReadPreference);
    HHVM_ME(MongoCollection, getSlaveOkay);
    HHVM_ME(MongoCollection, getWriteConcern);
    HHVM_ME(MongoCollection, group);
    HHVM_ME(MongoCollection, insert);
    HHVM_ME(MongoCollection, parallelCollectionScan);
    HHVM_ME(MongoCollection, remove);
    HHVM_ME(MongoCollection, save);
    HHVM_ME(MongoCollection, setReadPreference);
    HHVM_ME(MongoCollection, setSlaveOkay);
    HHVM_ME(MongoCollection, setWriteConcern);
    HHVM_ME(MongoCollection, toIndexString);
    HHVM_ME(MongoCollection, __toString);
    HHVM_ME(MongoCollection, update);
    HHVM_ME(MongoCollection, validate);

    HHVM_ME(MongoCommandCursor, batchSize);
    HHVM_ME(MongoCommandCursor, __construct);
    HHVM_ME(MongoCommandCursor, createFromDocument);
    HHVM_ME(MongoCommandCursor, current);
    HHVM_ME(MongoCommandCursor, dead);
    HHVM_ME(MongoCommandCursor, info);
    HHVM_ME(MongoCommandCursor, key);
    HHVM_ME(MongoCommandCursor, next);
    HHVM_ME(MongoCommandCursor, rewind);
    HHVM_ME(MongoCommandCursor, valid);

    HHVM_ME(MongoCursor, addOption);
    HHVM_ME(MongoCursor, awaitData);
    HHVM_ME(MongoCursor, batchSize);
    HHVM_ME(MongoCursor, __construct);
    HHVM_ME(MongoCursor, count);
    HHVM_ME(MongoCursor, current);
    HHVM_ME(MongoCursor, dead);
    HHVM_ME(MongoCursor, doQuery);
    HHVM_ME(MongoCursor, explain);
    HHVM_ME(MongoCursor, fields);
    HHVM_ME(MongoCursor, getNext);
    HHVM_ME(MongoCursor, getReadPreference);
    HHVM_ME(MongoCursor, hasNext);
    HHVM_ME(MongoCursor, hint);
    HHVM_ME(MongoCursor, immortal);
    HHVM_ME(MongoCursor, info);
    HHVM_ME(MongoCursor, key);
    HHVM_ME(MongoCursor, limit);
    HHVM_ME(MongoCursor, maxTimeMS);
    HHVM_ME(MongoCursor, next);
    HHVM_ME(MongoCursor, partial);
    HHVM_ME(MongoCursor, reset);
    HHVM_ME(MongoCursor, rewind);
    HHVM_ME(MongoCursor, setFlag);
    HHVM_ME(MongoCursor, setReadPreference);
    HHVM_ME(MongoCursor, skip);
    HHVM_ME(MongoCursor, slaveOkay);
    HHVM_ME(MongoCursor, snapshot);
    HHVM_ME(MongoCursor, sort);
    HHVM_ME(MongoCursor, tailable);
    HHVM_ME(MongoCursor, timeout);
    HHVM_ME(MongoCursor, valid);

    HHVM_ME(MongoCursorException, getHost);

    HHVM_ME(MongoDate, __construct);
    HHVM_ME(MongoDate, __toString);

    HHVM_ME(MongoDB, authenticate);
    HHVM_ME(MongoDB, command);
    HHVM_ME(MongoDB, __construct);
    HHVM_ME(MongoDB, createCollection);
    HHVM_ME(MongoDB, createDBRef);
    HHVM_ME(MongoDB, drop);
    HHVM_ME(MongoDB, dropCollection);
    HHVM_ME(MongoDB, execute);
    HHVM_ME(MongoDB, forceError);
    HHVM_ME(MongoDB, __get);
    HHVM_ME(MongoDB, getCollectionNames);
    HHVM_ME(MongoDB, getDBRef);
    HHVM_ME(MongoDB, getGridFS);
    HHVM_ME(MongoDB, getProfilingLevel);
    HHVM_ME(MongoDB, getReadPreference);
    HHVM_ME(MongoDB, getSlaveOkay);
    HHVM_ME(MongoDB, getWriteConcern);
    HHVM_ME(MongoDB, lastError);
    HHVM_ME(MongoDB, listCollections);
    HHVM_ME(MongoDB, prevError);
    HHVM_ME(MongoDB, repair);
    HHVM_ME(MongoDB, resetError);
    HHVM_ME(MongoDB, selectCollection);
    HHVM_ME(MongoDB, setProfilingLevel);
    HHVM_ME(MongoDB, setReadPreference);
    HHVM_ME(MongoDB, setSlaveOkay);
    HHVM_ME(MongoDB, setWriteConcern);
    HHVM_ME(MongoDB, __toString);

    HHVM_STATIC_ME(MongoDBRef, create);
    HHVM_STATIC_ME(MongoDBRef, get);
    HHVM_STATIC_ME(MongoDBRef, isRef);

    HHVM_ME(MongoDeleteBatch, __construct);
    HHVM_ME(MongoGridFS, __construct);
    HHVM_ME(MongoGridFS, delete);
    HHVM_ME(MongoGridFS, drop);
    HHVM_ME(MongoGridFS, find);
    HHVM_ME(MongoGridFS, findOne);
    HHVM_ME(MongoGridFS, get);
    HHVM_ME(MongoGridFS, put);
    HHVM_ME(MongoGridFS, remove);
    HHVM_ME(MongoGridFS, storeBytes);
    HHVM_ME(MongoGridFS, storeFile);
    HHVM_ME(MongoGridFS, storeUpload);
    HHVM_ME(MongoGridFSCursor, __construct);
    HHVM_ME(MongoGridFSCursor, current);
    HHVM_ME(MongoGridFSCursor, getNext);
    HHVM_ME(MongoGridFSCursor, key);
    HHVM_ME(MongoGridfsFile, __construct);
    HHVM_ME(MongoGridFSFile, getBytes);
    HHVM_ME(MongoGridFSFile, getFilename);
    HHVM_ME(MongoGridFSFile, getResource);
    HHVM_ME(MongoGridFSFile, getSize);
    HHVM_ME(MongoGridFSFile, write);
    HHVM_ME(MongoId, __construct);
    HHVM_STATIC_ME(MongoId, getHostname);
    HHVM_ME(MongoId, getInc);
    HHVM_ME(MongoId, getPID);
    HHVM_ME(MongoId, getTimestamp);
    HHVM_STATIC_ME(MongoId, isValid);
    HHVM_STATIC_ME(MongoId, __set_state);
    HHVM_ME(MongoId, __toString);
    HHVM_ME(MongoInsertBatch, __construct);
    HHVM_ME(MongoInt32, __construct);
    HHVM_ME(MongoInt32, __toString);
    HHVM_ME(MongoInt64, __construct);
    HHVM_ME(MongoInt64, __toString);
    HHVM_STATIC_ME(MongoLog, getCallback);
    HHVM_STATIC_ME(MongoLog, getLevel);
    HHVM_STATIC_ME(MongoLog, getModule);
    HHVM_STATIC_ME(MongoLog, setCallback);
    HHVM_STATIC_ME(MongoLog, setLevel);
    HHVM_STATIC_ME(MongoLog, setModule);
    HHVM_STATIC_ME(MongoPool, getSize);
    HHVM_ME(MongoPool, info);
    HHVM_STATIC_ME(MongoPool, setSize);
    HHVM_ME(MongoRegex, __construct);
    HHVM_ME(MongoRegex, __toString);
    HHVM_ME(MongoResultException, getDocument);
    HHVM_ME(MongoTimestamp, __construct);
    HHVM_ME(MongoTimestamp, __toString);
    HHVM_ME(MongoUpdateBatch, __construct);
    HHVM_ME(MongoWriteBatch, add);
    HHVM_ME(MongoWriteBatch, execute);
    HHVM_ME(MongoWriteConcernException, getDocument);
    HHVM_FE(log_cmd_delete);
    HHVM_FE(log_cmd_insert);
    HHVM_FE(log_cmd_update);
    HHVM_FE(log_getmore);
    HHVM_FE(log_killcursor);
    HHVM_FE(log_reply);
    HHVM_FE(log_write_batch);
    HHVM_FE(bson_decode);
    HHVM_FE(bson_encode);
    loadSystemlib();
}

mongoExtension s_mongo_extension;

HHVM_GET_MODULE(mongo);
} // namespace HPHP

redpajama_set_name: RedPajamaGithub


text:
Sustainable Nutrition at a glance
The Sustainable Nutrition Scientific Board (SNSB)
The SNSB members
Interview Pills
The Data Warehouse
The Case of Vegetable Oils
The second year of Research
What will happen in the second year of research?
Having established the case for the need to collect much more comprehensive and accurate data, how exactly do we go about doing that, and making the results that we find meaningful and useful in a practical way?
Our three-step process, outlined below, shows how we intend to gather the data, analyze that data, and finally devise a way, indeed the mathematical/algorithmic models, to apply the findings from the analysis phase.
Our initial phase, started in the first year of research and to be completed by August 2021, consists in the collection, organization and structuring of data using a state-of-the-art approaches, giving life to a detailed database. This large mass of data will be analyzed resorting to highly sophisticated tools borrowed from scientific fields that traditionally are not associated with the sustainable and healthy nutrition sector; for example, complex systems, networks, big data and artificial intelligence. Effectively this means going way beyond the observation techniques employed today, and getting down to finding the true relationships at a chemical level in our foodstuffs, crucial to understand how, in turn, they affect our bodies.
The second phase, to be completed by June 2022, will be to develop a unique and accurate description of the way that the chemical composition of foodstuffs relates to, and affects, chronic diseases (such as diabetes and obesity).
The third and final phase, to be completed for August 2022 will be to create a test project, where the aim will be to prove the findings as defined in the second phase. The overall goal is to demonstrate via the test project results confirmation of the findings that may potentially turn upside down the traditional way of producing and farming food.
The Data Warehouse Publication
Privacy policy & legal notes


Okorder.com is a professional Wooden Lockable Filing Cabinets supplier & manufacturer, offers integrated one-stop services including real-time quoting and online cargo tracking. We are funded by CNBM Group, a Fortune 500 enterprise and the largest Wooden Lockable Filing Cabinets firm in China.
How does a three-phase ac motor form a circuit?
Why do y/a users use names like Lib Crusher ?
Is it wrong to fill bamboo poles with cement?
Does mercury react with quartz?
Which pet bed is cuter?! XD?
Would the air bag light stay on because I drove the car without the instrument panel?


text:
Sticking It To God: Rebellious Stories As a Cliche to Play Against
September 13, 2013 by S. D. Smith 10 Comments
"The sacred exists and is stronger than all our rebellions." Czeslaw Milosz
Skipping the qualifiers, we live in an era where rebellion has been mainstreamed. Rebellion is, ironically, very conventional. Pedestrian even. The pervasiveness of rebellion extends to literature and media for children, driving the stories most kids are exposed to every day. I'll go on record and say this is mostly horrible. Like, civilization-destroying, enemy-embracing horrible.
We want our kids to be who they are uniquely called to be. We want them to have disruptive imaginations. Of course, it all depends on what they are disrupting. Since rebellion is conventional now, the unconventional thing is to reject rebellion. What we want is to disrupt this very religious, institutionalized, conventional rebellion. We want to object to this tired routine of being out-of-order.
Since we are Christians, we are called to submission. This terrifying word is the primary characteristic of the follower of Christ. It is literally what being a disciple means (to follow behind). We are called to a different story than the conventional rebellion of the ancient dragon in the garden. The story is a familiar one, and here we are, still in it.
At the front of our programs there's a roster, a gallery of who's who. There in bold we see that the rebel dragon is the bad guy. All the world's a stage and rebellion is wicked, dragons are evil, and we don't have to eat his fruit and so become his food.
And we need not only know the personnel, but their locations.
"God is in heaven, you are on earth, so let your words be few…"
(From Ecclesiastes 5)
Listen, oh boy, don't mean to bust your bubble…but there is a hierarchy in creation. God is the boss. And his authority is not a cage, but a key. His authority is an endowment. He is love. And his authority is loving. This also goes for the authority he establishes. Of course, if you're a parent like me, then it's apparent we don't exercise this God-ordained authority with the perfect love of our Father. But we have a chance to deal a counter-stroke in this great battle against rebellion and if we are to do this it must be in and through love.
One avenue of opportunity for this refreshing counter-stroke is in the arts. Not only is rebellion writ large on the calling card of the enemy of our souls, but it's also profoundly cliche in art. How many more movies do we need where the parents are hellacious buffoons in ties and aprons and our rebellious teenager with ripped jeans, who never makes eye contact (except with girls/victims), is proven to be the truly virtuous one. He followed his dream. The man tried to keep him down. He peels out in his Trans-am. He's against the system…ZZZzzzzzzzzzzz. Wake me up when the formulaic drivel is done.
Caveat: I know that these stories represent a sad and repressive reality in many homes. That stinks. Let's not do that. Grace and Truth.
Caveat about caveats: I'm trying not to qualify everything, but I give in sometimes.
So, the tired cliche of rebellious victory, or that rebellion = virtue, is pretty well played out, right? Sadly, it doesn't seem to be. There are some places where the type is actually played against and something like a true nuance is evident (Pixar's Brave), but it's still pervasive. I believe it's pervasive because it is part of our civic religion and our storytellers are writing out of that religious conviction, spreading the "good news" to the unconverted and encouraging the true believers. Down with authority, all the way up. We aim to stick it to "the man," because we can't quite get at God with such short arms.
But what an opportunity we have to tell more nuanced stories. See, the answer isn't to rebalance the scales by always and only portraying parents and other God-ordained authorities as basically perfect. That isn't honest either. It's to recapture the comprehensive nature of the Christian story.
Christians believe the world was good, that creation was beautiful, and that harmony is intended. So, when we tell stories about harmony and beauty and peace, we tell true stories.
But there was a fall, and since then sin and death are an unavoidable reality, a loud, discordant note in the symphony of mankind. When we tell stories where things are fouled up, we tell truthfully.
When we tell stories with evil and suffering that resolve in triumph of beauty through self-giving love, we tell perhaps the most truthful kind of story of all.
But they all fit and the varieties possible are almost innumerable. The Christian story is not narrow and confining. The Christian storyteller is not as limited as she has been led to believe. The Christian story has a genuine accounting for the way the world is, as well as for the indescribable longing we feel for resolution. In my view, the Christian worldview is the most broad, comprehensive, and reasonable of all. And the most ripe for tales.
Of course it's possible to tell stories in a dishonest way about the way God made the world. It's possible (and cliche, even) to represent rebellion as equal to virtue.
I'm not saying Christians should rally to authoritarianism, or anything like it. Only that we should respect the created order of God's world. That our expectation of "ordinate" should be what God says in his Word, not what our sentimental (and vapid) civic religion dictates.
I think a couple of things are important to consider:
1) Whenever there's a deep-seated cultural dogma (in this case, that rebellion= virtue), there's an honest, artful opportunity to work against that cliche.
2) Christians should consider avoiding championing a cultural dogma at odds with reality (like rebellion = virtue) by attaching Christian language to it.
I am thinking of many of the same nuances you are. Yes, Christians should rebel against racism, abortion, sexual perversity, and other cultural features which are evil, contrary to Scripture's teaching, and at odds with human flourishing. But that "rebellion" is really a humble alignment with the ordinate nature of the world God made –and is remaking. It's conservative in that it holds to truths delivered. It's progressive in that it clings to a virtue we see ahead in the coming Kingdom of God. It transcends the latest cultural kurfuffles, but does not ignore the evil they embrace.
I do believe God's loving authority is not a cage, but a key. Storytellers have a unique opportunity to help unbind us from the spell that makes that key seem evil.
(All parents are storytellers.)
Image by GrayscalexBassGDMCR
S. D. Smith
S. D. Smith is the award-losing author of The Green Ember Series. Sam loves chocolate chip cookies, soccer, and knights who kill dragons.
Latest posts by S. D. Smith (see all)
The Archer's Cup is Here - September 30, 2020
It Is What It Is, But It Is Not What It Shall Be - March 30, 2020
A Time To Embrace…Artists: Pandemic Patrons, Assemble - March 18, 2020
Filed Under: Faith & Vision, Fostering Imagination
Brenda Branson says
Love this, Sam! Such an important message. Well done!
S.D. Smith says
Thanks, Brenda.
James Witmer says
So unapologetic. So true. So good.
I'm sorry. I mean, thanks! And thanks for help editing, as always.
Julie Silander says
Sam – Thanks so much. We've been reading about the childhoods of famous artists and musicians. For the majority of them, greatness and excellence came as a direct result of submission. They entered into an apprenticeship or conservatory in order to learn all they could from the master. Reading and discussing the lives of artists like Benjamin West with our children are excellent real-life illustrations.
Great point, J. It seems like those stories don't get as much attention, but maybe I'm wrong. I need to hear those stories because my life is supposed to be defined by submission. I need inspiration!
Kris Camealy says
Wow. I love (and appreciate) your solid stance on this issue of rebellion as a virtue. Bravo, Sam.
Thank you, Kris. That means a lot.
Loren Eaton says
What we want is to disrupt this very religious, institutionalized, conventional rebellion.
While reading this sentence, I had the epiphany that my oldest has the perfect temperament to become a holy little iconoclast.
Great line, Sam.
Don Smith says
Truth, He is God and we are not. Good words son. Sorry the stories you grew up on were sometimes too much like the world's rebellion. Very happy that you heard enough to love the truth so much. Just tell stories a little better.


text:
30 Best Family Movies of 2021, Ranked
These family movies from 2021 are perfect for a quiet night together when everyone can enjoy some hearty laughter or cathartic cries.
30 Best Family Films of 2021, Ranked
When the weather outside is cold and your family is going a bit stir-crazy, there's nothing like snuggling in to enjoy a good movie for all ages. Sometimes, when it comes to family films, it can feel like they're geared more towards kids than they are adults. But 2021 actually had some awesome additions to the family-friendly genre that everyone will enjoy.
From action-filled adventures to hilarious comedies to animated heartfelt tearjerkers to playful musicals, there's all sorts of new movies you can watch together. And most of them are available on streaming platforms, so you don't even have to add in the stress of a car ride or spending a fortune on snacks.
Here are the 30 of the best family movies of 2021, ranked in order based on both audience and critic responses.
30. Diary of a Wimpy Kid
Release date: Dec. 3, 2021
Director: Swinton Scott
Box office earnings: $76.2 million
Bottom Line: Diary of a Wimpy Kid
The first animated movie from the powerhouse books and previous live-action stories based on the "Diary of a Wimpy Kid"series, most people seemed to enjoy this kid-friendly flick. With a shorter runtime of just over an hour, it can hold even younger attention spans in place.
The majority of critics enjoyed it, with the consensus being if you're already invested in the popular source material, it is a delight to watch. It's available to stream on Disney+.
29. Flora & Ulysses
Director: Lena Khan
Box office earnings: N/A
Bottom Line: Flora & Ulysses
Another book-turned-movie adaptation, this delightful family film follows a young girl and a superhero-squirrel best friend. It takes audiences on a heartwarming ride that will have you quickly believing in magic.
And though the squirrel is technically the superhero of the movie, it will leave you believing you're capable of becoming your own hero, which is a great message for even the youngest kids. It's available to stream on Disney+.
28. Rumble
Release date: Dec. 15, 2021
Director: Hamish Grieve
Bottom Line: Rumble
One of the newer movies on this list, "Rumble" debuted at the end of 2021 only on Paramount's streaming platform. This lighthearted movie follows a young girl who wants to get into the very popular world-famous sport of monster wrestling.
So, she finds and begins coaching a dopey monster who doesn't seem to stand a chance. But she's able to transform him into a recognized world champion while, of course, having a lot of fun and laughs (and learning valuable lessons) along the way. It's only available for streaming on Paramount+.
27. The Addams Family 2
Release date: Oct. 1, 2021
Director: Conrad Vernon, Greg Tiernan
Box office earnings: $110.2 million
Bottom Line: The Addams Family 2
It seems like ever since they've been introduced into the world, the Addams Family never fails to live up to their weird and wonderful reputation. The kooky clan decide to spend time traveling together in a camper, which allows them to not only grow closer but also gives the world more dizzying doses of the spooky family.
It's fun, simple and a family-friendly watch. While many critics didn't love this film, most audience members enjoyed it.
26. Cinderella
Release date: Sept. 3, 2021
Director: Kay Cannon
Bottom Line: Cinderella
If you're a fan of any of the "Pitch Perfect" films (or your children are), this same playful song and dance energy is infused into Amazon's latest retelling of this classic story. It stars pop singer Camilla Cabello as Cinderella and Idina Menzel, whose powerful voice you'll recognize from the thousands of hours you've heard "Let it Go" from "Frozen," as the evil stepmother.
In this version, Cinderella isn't just waiting around to let a prince make her happy. She finds her own life's purpose that becomes even sweeter when her true love comes around.
25. Yes Day
Director: Miguel Arteta
Bottom Line: Yes Day
After feeling fed up and like walking wet blankets for always saying "no" to their children, two parents decide to say nothing but "yes" for a full day. And, in both film and book, it's adapted from, a very fun and funny story ensues.
The bonding fun, laughs and love that fill this movie will inspire families everywhere to maybe have their own "Yes Day." It's available for streaming on Netflix.
24. The Loud House Movie
Release date: Aug. 20, 2021
Director: Dave Needham
Bottom Line: The Loud House Movie
Based on the popular Nickelodeon series, this movie features an animated family who travel together to Scotland only to learn they're descendants of royalty. They then embark on a decadent high-society holiday in the castle they've recently learned is part of their family history.
There's a lot of music and dancing that will have energetic little ones (hopefully) wearing themselves out with all the good fun. It's available for streaming on Netflix.
23. 8-Bit Christmas
Release date: Nov. 24, 2021
Director: Michael Dowse
Bottom Line: 8-Bit Christmas
It's always refreshing when a new Christmas movie can make you laugh while also getting you in the holiday spirit. This movie balances those two things perfectly. Parents will love the retro references, and kids will love the adventure-filled storyline.
It's humorous, heartwarming and a great pick for family movie night — as well as a Christmas movie that will be fun to watch over and over again. It's available to stream on HBO Max.
22. Space Jam: A New Legacy
Director: Malcolm D. Lee
Bottom Line: Space Jam: A New Legacy
Critics railed on this classic movie remake, but the majority of non-critic audience members loved it. And what's not to love? The movie pays homage to the original Space Jam in all the best ways while being a standalone, really fun and surprisingly refreshing movie.
For kids who weren't yet even glimmers in their parents' eyes when the original came out, it introduces a whole new world of cartoons. And for parents, it's fun to see Bugs Bunny and the gang back in action. It's available to stream on HBO Max.
21. A Boy Called Christmas
Release date: Nov 26, 2021
Director: Gil Kenan
Box office earnings: $1.5 million
Bottom Line: A Boy Called Christmas
Another charming Christmas movie that made its way into people's holiday hearts this season, "A Boy Called Christmas" follows a normal boy who sets out on an adventure to find his father, only to discover a mysterious and magical village. With the help of his pet mouse and a reindeer, he eventually learns not only the meaning of Christmas, but also his very special role in it.
If you love a heartfelt holiday coming-of-age origin story, this is a great movie for you (and the whole family). It's currently streaming on Netflix.
20. Wish Dragon
Release date: June 11, 2021 (U.S.), earlier in China
Director: Chris Appelhans
Bottom Line: Wish Dragon
This animated fantasy movie produces not only a lot of laughs but also a genuinely sweet storyline. Even though it's a big story with a big budget, the box office earnings don't reflect just how popular this movie actually is because it's streaming on Netflix.
It was released at the end of 2020 in China but came to the United States through Netflix in the middle of 2021. Movie Insider was especially keen on this film, giving it a hard-to-snag 5/5 rating.
19. Boss Baby: Family Business
Director: Tom McGrath
Bottom Line: Boss Baby: Family Business
The sequel to the popular, bossy, deep-voiced baby's original tale, "Boss Baby: Family Business" takes the toddler tantrums to the next level. After Boss Baby grows up and he drifts apart from his brother, they're magically transformed back into their childhood selves in order to reconnect.
And, of course, both chaos and hilarity ensue. It's available for streaming Peacock TV and Hulu Premium.
18. Robin Robin
Director: Daniel Ojari, Michael Please
Bottom Line: Robin Robin
An extra-special addition to this list, this story is part coming-of-age and part Christmas. But it's wholly charming and delightful. This is an original storyline with especially innovative animation that will make your family remember what it means to connect — especially over the holiday season.
Plus, it's shorter than an average feature film with a running time right around 30 minutes. So, it's perfect for little ones with shorter attention spans. It's a Netflix original, so you can stream it there.
17. Vivo
Release date: Aug. 6, 2021
Director: Kirk DeMicco
Bottom Line: Vivo
When his aging owner asks him to deliver a very special song to the long-lost love of his life, a musical kinkajou (voiced by the one-and-only Lin-Manuel Miranda) sets off to deliver the message. But when things go awry, he finds himself with an unlikely and impulsive best friend who helps him to find joy in the journey, not just the destination.
It's a feel-good, sound-good and dance-good (that can be a thing!) movie that everyone young and old can enjoy. It's streaming on Netflix.
16. Peter Rabbit 2: The Runaway
Director: Will Gluck
Bottom Line: Peter Rabbit 2: The Runaway
Despite his best efforts and the new stability of a found family, Peter Rabbit can't shake his old mischievous ways. After being sent to life in a quiet burrough far away from trouble, he heads back into the city looking for it. And he finds it.
And it's … adorable on all fronts. Just like the first film, this fun and feel-good movie does a great job of balancing playfulness with seriously sweet messages about loving yourself and your family.
15. Trollhunters: Rise of the Titans
Director: Andrew Schmidt, Johane Matte, Francisco Ruiz Velasco
Bottom Line: Trollhunters: Rise of the Titans
This film has imagination written all over it. It's the finale to a franchise created by the innovative mind of Guillermo del Toro and brings together three popular TV shows, "Trollhunters," "3Below" and "Wizards." There's magic. There's trolls. There's monsters. There's aliens. And there's titans who want to destroy the world.
Even with the levity and entertaining bits that animation allows, it might be a little intense for the youngest of audiences. But it will be a major delight for most kids (and a surprisingly great movie for adults, too). It's streaming on Netflix.
14. Finding 'Ohana
Release date: Jan. 29, 2021
Director: Jude Weng
Bottom Line: Finding 'Ohana
Two New York City-raised siblings are frustrated to find themselves stuck on Hawaii for a year, despite the fact that their family is from there. The simultaneous discovery that their family needs financial help and remnants of a rare treasure map means they're quickly off for an Indiana Jones style adventure.
This movie balances magical moments both big and small that will leave audience members feeling all sorts of warm fuzzies. It's a refreshing movie that everyone will love. It's streaming only on Netflix.
13. Spirit Untamed
Director: Ennio Torresan
Bottom Line: Spirit Untamed
If you have a "wild child," they will most definitely resonate with the messages in this movie. A feisty young girl learns she has a knack for horseback riding like her mother did and is able to befriend an otherwise untameable horse she names Spirit. Together, they help each other feel and stay free on a lot of levels.
Critics were wishy-washy in their reviews of this movie, but audiences adored it. It is streaming on Peacock and Hulu premium.
12. Jungle Cruise
Director: Jaume Collet-Serra
Bottom Line: Jungle Cruise
If you were hesitant about seeing a movie inspired by a Disney ride, let the all-star cast of Dwayne Johnson and Emily Blunt put your mind at ease. This action-packed story is, like its namesake, a really fun ride. It's filled with thrills and twists and turns, both in the storyline and actually on a raging river.
Plus, Blunt and Johnson are dynamic together, perfectly weaving humor with genuine edge-of-your-seat action scenes. And, of course, it's Disney, so it's very family friendly. You can stream it on Disney+.
11. Luca
Director: Enrico Casarosa
Bottom Line: Luca
There's never been a more-fish-out-of water-story than this story about, well, two fish out of water. Two young sea monsters explore the land together in this Disney Pixar tale. And, in doing so, they have to learn how to overcome their fears and figure out who they really are — and whether or not that involves swimming or walking (or both!).
In true Pixar fashion it's charming, beautiful and will jerk at your heartstrings. It's available on Disney+.
10. Clifford the Big Red Dog
Director: Walt Becker
Box office earnings: $69 million
Bottom Line: Clifford the Big Red Dog
For every adult who now has children but remembers the stories of the beloved big red dog Clifford, this brings that magic to life. Clifford takes over the screens (and New York City) in this all his playful movie.
Though dog lovers could go just to watch the large dog in all its glory, there's genuine lessons of acceptance and unconditional love that will make you feel good about sharing the movie experience with your kids. It's available to stream on Paramount+.
9. My Little Pony: A New Generation
Director: Robert Cullen, José Uchua
Bottom Line: My Little Pony: A New Generation
It's fair to be hesitant about a whole movie dedicated to a toy line. But the truth is, the movie charms the hooves off audiences from the get go. It's a magical world where ponies, unicorns and pegasus no longer get along. But thanks to a chance encounter, they must all work together once again.
Oh, and they do so not only through large, magical adventures, but also through catchy and fun songs. It's available to stream on Netflix.
8. Ron's Gone Wrong
Release date: Oct. 22, 2021
Director: Sarah Smith, J.P. Vine
Bottom Line: Ron's Gone Wrong
For parents who especially want to encourage their children to live by their own rules and accept their uniqueness, "Ron's Gone Wrong" is an instant classic. In a world where everyone has to have a robot best friend in order to fit in, one kid gets what he asks for … and then some.
Ron is a robot who somehow malfunctioned from the get go. And while the rest of the world sees that as a problem, his best (human) friend quickly learns that it's a gift. It's available to stream on both HBO Max and Disney+.
7. Encanto
Director: Byron Howard, Jared Bush
Box office earnings: $175.5 mil
Bottom Line: Encanto
When a magical family who live in a magical home and are each bestowed magical individual abilities begin to lose everything, the only seemingly non-magical family member must save them all. Between the stunning visuals, the wholesome message and the deeply inspiring message, this film is a total win for audiences of all ages.
And unlike many family movies that critics and audiences may disagree on, everyone seems to be enchanted by "Encanto." It is available to stream on Disney+.
6. Cruella
Director: Craig Gillespie
Bottom Line: Cruella
What happens when two amazing Emmas meet? A kick-mutt movie like "Cruella," that's what. Emma Stone plays the titular Cruella, one of Disney's most beloved and, as the movie teaches, most misunderstood villains. And she's up against Emma Thompson, who eats up the role of the villain in a villain's backstory like nobody else could.
For any dog lovers out there who are worried about the animals, rest-assured that Cruella is actually a dog lover … but doesn't care to set the record straight for anyone who thinks otherwise. It's a really fun movie and understandable that 97 percent of audiences on Rotten Tomatoes loved it. It's available for streaming on Disney+.
Director: Jason Reitman
Bottom Line: Ghostbusters: Afterlife
It's not really fair to call this movie a sequel, because it's very much its own storyline. But it's also not a brand-new type of ghostbusting. This movie pays perfect tribute to the original "Ghostbusters" franchise that took the 1980s by storm, with perfect connections and plenty of the same toys.
But it does so in an innovative, refreshing and all-out entertaining way. Plus, it features Paul Rudd who is as ageless as the source material.
4. PAW Patrol: The Movie
Director: Cal Brunker
Bottom Line: PAW Patrol: The Movie
Parents everywhere breathed a collective sigh of relief when the much-anticipated PAW Patrol characters finally came to life on the big screen. The storyline is what you'd expect, as is most of the movie. But that's exactly what makes it so charming. When the group's biggest rival begins causing trouble in Adventure City, the PAW Patrol gang have to save the day.
Delivering on all the hype it promises, it's a very fun movie packed with all-star cameos that will make all PAW Patrol-loving children jump for joy. It's available for streaming on Paramount+.
3. King Richard
Director: Reinaldo Marcus Green
Box office earnings: $26.2 million worldwide
Bottom Line: King Richard
While most of the movies on this list have been all-ages family friendly, this one is better for older kids. It follows the inspired-by-true-events story of the Williams sisters who changed tennis forever.
It's included here because at the core of this excellent movie is a story about family bonds and what it means to work towards something bigger than yourself. For parents of teenagers especially, it's a great watch. It's available on HBO Max.
2. The Mitchells vs. The Machines
Director: Michael Rianda
Bottom Line: The Mitchells vs. The Machines
This movie is easily one of the best comedies in the past several years and probably the best animated adventure comedy in recent memory. It's, of course, packed with laughs as you'd expect from this all-star comedic cast.
But it also has some awesome messages about what it means to be a family, embracing your weirdness and taking time away from our everyday technological obsessions to remember what really matters in this world. It's available only on Netflix.
1. Raya and the Last Dragon
Director: Carlos López Estrada, Don Hall
Bottom Line: Raya and the Last Dragon
This movie has something for everyone. It's an epic tale about a young heroine who has to find the last dragon in the land in order to end long-standing wars. But when she does find the dragon, it's not exactly what she expected. And neither is what she has to do in order to bring about peace.
It's an animated action adventure for the ages. There's a reason both audiences and critics alike are obsessed with it. It's available on Disney+.


text:
Previous: Chapter
Next: Chapter
CHAPTER 3ESTABLISHING CORPORATE JOINT COMMITTEES where request has been made
Applications to establish a corporate joint committee
70Application by principal councils to establish a corporate joint committee
(1)Any two or more principal councils may jointly make an application (a "joint committee application") to the Welsh Ministers, asking them to consider making regulations under section 72 establishing a corporate joint committee to exercise—
(a)a function of those councils;
(b)the economic well-being function,
in relation to the principal areas of those councils.
(2)If, following receipt of a joint committee application, the Welsh Ministers decide not to make regulations under section 72, they must notify the principal councils that made the application.
71Consultation before making joint committee application
Before making a joint committee application the principal councils must consult—
(a)local people in the principal councils' areas,
(b)each of the councils for communities in the principal councils' areas,
(c)the National Park authority for a National Park, any part of which is in the area of any of the principal councils,
(d)the public services board or boards for the principal councils' areas,
(e)every trade union which is recognised (within the meaning of the Trade Union and Labour Relations (Consolidation) Act 1992 (c. 52)) by one or more of the principal councils, and
(f)such other persons as the principal councils consider appropriate.
Requested joint committee regulations
72Requested joint committee regulations
(1)The Welsh Ministers may by regulations establish a body corporate (to be known as a corporate joint committee) to exercise, in relation to the principal areas of the principal councils that made the joint committee application ("the relevant councils"), a function specified in the regulations.
(2)But the Welsh Ministers may make regulations under this section only if the conditions set out in section 73 are satisfied.
(3)Regulations under this section may specify only—
(a)a function of the principal councils that made the application;
(b)the economic well-being function.
(4)Regulations under this section which specify a function of a principal council must make provision so that the function is either—
(a)exercisable by the corporate joint committee instead of by the relevant councils, or
(b)exercisable concurrently by the corporate joint committee and the relevant councils.
(5)A function of a principal council may be specified in regulations under this section by reference to a particular activity or activities.
73Conditions to be met before making requested joint committee regulations
(1)The conditions mentioned in section 72(2) are as follows.
(2)The first condition is that the Welsh Ministers have received a joint committee application.
(3)The second condition is that the Welsh Ministers have consulted the following on a draft of the proposed regulations—
(a)the principal councils that made the joint committee application,
(b)local people in the principal councils' areas,
(c)each of the councils for communities in the principal councils' areas,
(d)the National Park authority for a National Park, any part of which is in the area of any of the principal councils,
(e)the public services board or boards for the principal councils' areas,
(f)every trade union which is recognised (within the meaning of the Trade Union and Labour Relations (Consolidation) Act 1992 (c. 52)) by one or more of the principal councils, and
(g)such other persons as the Welsh Ministers consider appropriate.
(4)The third condition is that the principal councils that made the joint committee application have each given consent in writing to the regulations being made.
PrintThis Chapter only
PDF This Chapter only
Web page This Chapter only